Dynamic 条件jsf包含

Dynamic 条件jsf包含,dynamic,jsf-2,user-interface,include,Dynamic,Jsf 2,User Interface,Include,如何在运行时有条件地包含jsf facelets文件? 示例功能是必需的 if ( add button click) { ui:include src="Add.xhtml" } if ( update button click) { ui:include src="Update.xhtml" } 上面的语法只是指示性的 Mojarra 2.1.1/Apache Tomcat 7.0.22/PrimeFaces 3.4ui:include没有呈现的属性,因此必须将其封装在其他组件中。此

如何在运行时有条件地包含jsf facelets文件? 示例功能是必需的

if ( add button click) {

ui:include src="Add.xhtml"
}

if ( update button click) {

ui:include src="Update.xhtml"
}
上面的语法只是指示性的


Mojarra 2.1.1/Apache Tomcat 7.0.22/PrimeFaces 3.4
ui:include
没有
呈现的属性,因此必须将其封装在其他组件中。此外,您将根据单击的按钮在服务器上设置一些属性


在backingbean中,您将有getter和setter:

publicsvoidsetaction(字符串操作){
这个动作=动作;
}
公共字符串getAction(){
返回动作;
}

我重新发布了partlov的答案,因为我有一些错误,我纠正了这些错误并将其放在这个位置上,并祝贺partlov获得了非常好的答案

我补充你的回答 首先,这是一个带有素数面的xhtml页面,如果您想使用p:addthisframeworc或其他

如果您不下载此框架,请不要在此处加载

这条路很重要

xmlns:p="http://primefaces.org/ui"
选择.XHTML

<h:head>
    <title>Facelet Title</title>
</h:head>
<h:body>
  <h:form>
    <p:commandButton value="Add" update="panel">
      <f:setPropertyActionListener value="add" target="#{myBean.action}"/>
    </p:commandButton>
    <p:commandButton value="Update" update="panel">
      <f:setPropertyActionListener value="update" target="#{myBean.action}"/>
    </p:commandButton>


    <h:panelGroup id="panel">
      <h:panelGroup rendered="#{myBean.action == 'add'}">
        <ui:include src="headerLogin.xhtml"/>
      </h:panelGroup>
      <h:panelGroup rendered="#{myBean.action == 'update'}">
        <ui:include src="Pajax.xhtml"/>
      </h:panelGroup>
    </h:panelGroup>
  </h:form>
</h:body>
把这条鳕鱼用在clas里

public class myBean {
String action;
public void setAction(String action) {

    this.action = action;
}

public String getAction() {
  return action;
}
}

但是记住把这条线放在课堂上

@ManagedBean
@SessionScoped

一个替代问题是,如果它是一个条件包含,那么为什么在调用主文件时处理xhtml。。。我通过在add.xhtml文件中包含一个f:event-prerenderview标记来检查这一点,例如。。。我通过listener方法打印system.out。。。是的,视图范围的bean没有实例化,但是xhtml被解析并触发prerenderview事件。。。当它是条件包含时为什么会这样?这是因为
ui:include
是在构建视图阶段执行的,而渲染属性是在渲染视图阶段稍后计算的。这就是JSF中的工作方式。如果这是一个问题,你必须考虑另一个解决方案。考虑解决问题。@ᴠɪɴᴄᴇɴᴛ 固定的。谢谢。这个例子有用吗?我复制粘贴了代码并尝试了一下,但没有达到预期效果。我需要刷新页面以继续下一个选项。感谢您的帮助。
@ManagedBean
@SessionScoped