我希望你能帮助我。 我使用jsf和richefaces,我有一个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>
答案 0 :(得分:2)
这里有不同的选项,因为你使用的是richfaces,我也会包含一个例子。
如果您选择纯JSF方法,请使用由{bean}定义的<h:panelGroup>
属性rendered
。此属性必须为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*/;
}
有很多方法可以采取,只需选择。
答案 1 :(得分:0)
使用a4j:outputpanel并在其中使用ui:include:
<a4j:outputPanel rendered="#{someBean.someBoolean}">
<ui:include src="somepage.xhtml" />
</a4j:outputPanel>