如何在条件中显示和更新“子页面”(使用primefaces)

时间:2011-06-22 08:16:59

标签: java jsf primefaces

我有一个方案要实现,但我不知道该怎么做(我使用的是primefaces) 场景是: 我有一个selectOneMenu,其中包含用户可以选择其中一个的选项, 当用户选择一个选项时,“表单”或“子页面”应该出现在selectOneMenu下面,用户应该填写它。 “子页面”根据选择的选项

进行更改

例如:option1 --->子第1页

option2 ---> Sub-Page2等..

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();
}

 }      

1 个答案:

答案 0 :(得分:0)

你应该发布一些相似的代码:一张图片。您可能正在寻找的是“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也很棒,你可能对他们的组件套件非常满意)