0

我希望你能帮助我。我使用jsf和richefaces,我有一个jsf页面,我想根据参数包含所有其他页面,我的问题是如何在我的xhtml文件中引入测试条件。

感谢您的回复,有我的代码,但它不起作用,我的 bean

 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>
4

2 回答 2

2

这里有不同的选项,由于您使用的是richfaces,因此我也将包含一个示例。

如果您选择纯 JSF 方法,请使用<h:panelGroup>带有rendered属性的 bean,由您的 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*/;
}

方法有很多种,任君挑选。

于 2013-04-12T17:39:05.993 回答
0

使用 a4j:outputpanel 并在其中使用 ui:include:

    <a4j:outputPanel rendered="#{someBean.someBoolean}">
        <ui:include src="somepage.xhtml" />
    </a4j:outputPanel>
于 2013-04-12T17:35:20.647 回答