如何在条件中显示和更新"sub-page"(使用素数)



我有一个场景要实现,但我不知道如何实现(我使用的是素数面)场景是:我有一个selectOneMenu,其中包含用户可以选择的选项,当用户选择一个选项时,selectOneMenu下面应该出现一个"表单"或"子页面",用户应该填写它。"子页面"根据选择的选项而变化

例如:选项1-->子页面1

选项2-->子页面2等。

JSF-

<h:selectOneMenu  style="width:200px" immediate="true"  value="#{ToolsKPI.myChoice}" onchange="submit()"  valueChangeListener="#{BeanTest.selectChangeHandler}" required="true" >
           <f:selectItems value="#{ToolsKPI.getMyListKPI()}" />
             </h:selectOneMenu>
         <p:panel rendered="#{BeanTest.showPanelBool}" >
          <h1>KPI1</h1>
           <br></br>
             <h:inputText value="test1" />
         </p:panel>
                <p:panel rendered="#{BeanTest.showPanelBool1}" >
                    <br></br>
                    <h1>KPI2</h1>
              <h:inputText value="test2" />
             <h:inputText value="test3" />
         </p:panel>

我的豆子

public class BeanTest implements java.io.Serializable {
 private String myChoice;
 private  boolean showPanelBool;
private  boolean showPanelBool1;

  public BeanTest() {
}
//getters ande setters

public void selectChangeHandler(ValueChangeEvent event){
 myChoice = (String) event.getNewValue(); // Must however be the exact page URL. E.g. "contact.jsf".
  FacesContext.getCurrentInstance().getExternalContext();
if(myChoice.equals("Number Of Closed issues") ){
this.showPanelBool = true;
} else{
this.showPanelBool = false;
this.showPanelBool1 = true;
}  
FacesContext.getCurrentInstance().renderResponse();
}
 }      

您真的应该发布一些代码的外观:图片之类的。您可能正在寻找一个"p:outputPanel"组件或类似的东西。

http://www.primefaces.org/showcase/ui/outputPanel.jsf

您可以使用类似的ValueChangeListener做一些事情

public void onSelectItem(ValueChangeEvent evt)
{
  if("someValue".equals(evt.getNewValue())
    showPageOne = true;//boolean
  else
    showPageTwo = true;//boolean
}
//JSF
<h:form id="myForm">
  <h:selectOneMenu valueChangeListener="#{myBean.onSelectItem}" update="myForm">
    <f:selectItems value="items">
  </h:selectOneMenu>
  <p:outputPanel rendered="#{myBean.showPageOne}">
    hi I'm page one
  </p:outputPanel>
  <p:outputPanel rendered="#{myBean.showPageTwo}">
    hi I'm page two
  </p:outputPanel>
</h:form>

很抱歉使用了伪代码,Primefaces上的示例将在这里真正帮助您。OutputPanel经常帮我节省开支。您需要指定一个更新目标,但该示例非常清晰且易于运行。玩吧。

(Primefaces也很棒,你可能会对他们的组件套件感到非常满意)

最新更新