我有一个方案要实现,但我不知道该怎么做(我使用的是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();
}
}
答案 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也很棒,你可能对他们的组件套件非常满意)