Primefaces 如何 show/hide inputText 基于选定的 selectManyCheckbox 项目

Primefaces How to show/hide inputText based on selected selectManyCheckbox items

我需要你的帮助来根据 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;
  }
}

如果selectManyCheckbox包含("PS4"),则显示inputText,否则保持隐藏。现在在上面的例子中,它显示了我是否选择了 PS4,但是当我取消选择 PS4 时,inputText 将保留在表单中并且不会被隐藏。

试试这个 - inputText 在开始时不可见,因此无法更新。

 <h:panelGroup id="name">
      <p:inputText value="" rendered="#{user1.renderText}"/>
 </h:panelGroup>