如何根据 p:selectManyCheckbox 选择 'unrender' p:inputText
How to 'unrender' a p:inputText based on p:selectManyCheckbox selection
我需要你的帮助来根据 xhtml 中的 selectManyCheckbox 的选择呈现 inputText。代码是:
<p:selectManyCheckbox id="basic" value="#{user1.selectedConsoles}">
<f:selectItem itemLabel="Xbox One SS" itemValue="XboxOne" />
<f:selectItem itemLabel="PS4 SS" itemValue="PS4" />
<f:selectItem itemLabel="Wii U SS" itemValue="WiiU" />
<p:ajax listener="#{user1.renderInput}" update="name"/>
</p:selectManyCheckbox>
<h:panelGroup id="name">
<p:inputText value="" rendered="#{user1.renderText}"/>
</h:panelGroup>
和bean代码:
private String[] selectedConsoles; //Setter & Getter
private List<String> list = new ArrayList<String>(); //Setter & Getter
private boolean renderText = false; //Setter & Getter
public void renderInput() {
list= Arrays.asList(selectedConsoles);
if (list.contains("PS4")) {
renderText = true;
}
else if (!list.contains("PS4")) {
renderText = false;
}
}
在上述情况下,一旦我选择了 PS4,就会显示 inputText。但是当我取消选中 PS4 时,inputText 将在表单中保持可见并且不会是 'unrendered'。我怎样才能做到这一点。
为此,有 PrimeFaces OutputPanel 组件,它基本上充当占位符。要么使用 autoUpdate true,要么在 select 上更新它。
以下代码片段可以解决您的问题:
<h:panelGroup id="name">
<p:outputPanel autoUpdate="true">
<p:inputText value="" rendered="#{user1.renderText}" />
</p:outputPanel>
</h:panelGroup>
我需要你的帮助来根据 xhtml 中的 selectManyCheckbox 的选择呈现 inputText。代码是:
<p:selectManyCheckbox id="basic" value="#{user1.selectedConsoles}">
<f:selectItem itemLabel="Xbox One SS" itemValue="XboxOne" />
<f:selectItem itemLabel="PS4 SS" itemValue="PS4" />
<f:selectItem itemLabel="Wii U SS" itemValue="WiiU" />
<p:ajax listener="#{user1.renderInput}" update="name"/>
</p:selectManyCheckbox>
<h:panelGroup id="name">
<p:inputText value="" rendered="#{user1.renderText}"/>
</h:panelGroup>
和bean代码:
private String[] selectedConsoles; //Setter & Getter
private List<String> list = new ArrayList<String>(); //Setter & Getter
private boolean renderText = false; //Setter & Getter
public void renderInput() {
list= Arrays.asList(selectedConsoles);
if (list.contains("PS4")) {
renderText = true;
}
else if (!list.contains("PS4")) {
renderText = false;
}
}
在上述情况下,一旦我选择了 PS4,就会显示 inputText。但是当我取消选中 PS4 时,inputText 将在表单中保持可见并且不会是 'unrendered'。我怎样才能做到这一点。
为此,有 PrimeFaces OutputPanel 组件,它基本上充当占位符。要么使用 autoUpdate true,要么在 select 上更新它。
以下代码片段可以解决您的问题:
<h:panelGroup id="name">
<p:outputPanel autoUpdate="true">
<p:inputText value="" rendered="#{user1.renderText}" />
</p:outputPanel>
</h:panelGroup>