如何放弃' a p:inputText基于p:selectManyCheckbox选择

时间:2015-05-22 17:10:35

标签: ajax jsf primefaces

我需要你的帮助,根据xhtml中selectManyCheckbox的selecttio渲染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将在表单中保持可见状态,并且不会被取消。#39;。我怎样才能做到这一点。

1 个答案:

答案 0 :(得分:-1)

为此,有PrimeFaces OutputPanel组件,它基本上充当占位符。您可以使用autoUpdate true,也可以在select上更新它。

以下代码段解决了您的问题:

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