希望你能帮助我。我使用jsf和richhefaces,我有一个jsf页面,我想根据参数包括所有其他页面,我的问题是如何在我的xhtml文件中引入测试条件。
谢谢你的回复。有我的代码,但它不工作,我的豆
public class TestBean {
private boolean ajoutH;
private boolean listH;
public boolean isListH() {
FacesContext fc = FacesContext.getCurrentInstance();
Map<String,String> params =
fc.getExternalContext().getRequestParameterMap();
String id = params.get("listH");
if(id.equals("listH")){
return true;}
else{
return false;
}
}
public boolean isAjoutH() {
FacesContext fc = FacesContext.getCurrentInstance();
Map<String,String> params =
fc.getExternalContext().getRequestParameterMap();
String id = params.get("ajoutH");
if(id.equals("ajoutH")){
return true;}
else{
return false;}
和我的页面jsf
<rich:panelMenuGroup label="Hotes">
<rich:panelMenuItem>
<h:outputText value="Ajouter Hote" event="onclick">
<f:param value="{ajoutH}" name="ajoutH" />
</h:outputText>
</rich:panelMenuItem>
<rich:panelMenuItem >
<h:outputText value="Gérer Hotes" >
<f:param value="{listH}" name="listH" />
</h:outputText>
......
<h:panelGroup rendered="#{TestBean.ajoutH}">
<ui:include src="./ajoutHote.xhtml"/>
</h:panelGroup>
<h:panelGroup rendered="#{TestBean.listH}">
<ui:include src="./listHotes.xhtml"/>
</h:panelGroup>
这里有不同的选项,因为你使用的是richfaces,所以我也会包括一个例子。
如果采用纯JSF方法,则使用带有rendered
属性的<h:panelGroup>
,由bean定义。该属性必须为boolean
。
<h:panelGroup rendered="#{yourBean.yourCondition}">
<ui:include src="pages/yourPage.xhtml">
...
</h:panelGroup>
另一种选择是使用<a4j:region>
。它的工作原理基本相同。
<a4j:region rendered="#{yourBean.yourCondition}">
<ui:include src="pages/yourPage.xhtml">
...
</a4j:region>
无论选择什么,bean都应该定义条件:
public Boolean isYourCondition() {
return /*your logic here*/;
}
有很多方法可以采取,你自己选吧。
使用a4j:outputpanel并在其中ui:include:
<a4j:outputPanel rendered="#{someBean.someBoolean}">
<ui:include src="somepage.xhtml" />
</a4j:outputPanel>