将jsf页面作为条件包含在另一个jsf页面中



希望你能帮助我。我使用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>

相关内容

  • 没有找到相关文章

最新更新