Conditional jsf 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没有rendered属性,因此必须将其封装在其他组件中。此外,您将根据单击的按钮在服务器上设置一些属性。

<h:form>
  <p:commandButton value="Add" update=":includeContainer">
    <f:setPropertyActionListener value="add" target="#{myBean.action}"/>
  </p:commandButton>
  <p:commandButton value="Update" update=":includeContainer">
    <f:setPropertyActionListener value="update" target="#{myBean.action}"/>
  </p:commandButton>
</h:form>
<h:panelGroup id="includeContainer">
  <h:panelGroup rendered="#{myBean.action == 'add'}">
    <ui:include src="add.xhtml"/>
  </h:panelGroup>
  <h:panelGroup rendered="#{myBean.action == 'update'}">
    <ui:include src="update.xhtml"/>
  </h:panelGroup>
</h:panelGroup>

在backing bean中,您将有getter和setter:

public void setAction(String action) {
  this.action = action;
}
public String getAction() {
  return action;
}

我转发partlov的答案,因为有一些错误,我纠正了这个错误并放在这个位置,并祝贺partlov有很多好的答案

我补充你的答案首先,这是一个带有素数的XHTML页面,如果您想使用p:添加这个框架或其他。

如果你不想下载这个框架,请在这里下载主要的JSF框架

和import for this

xmlns:p="http://primefaces.org/ui"

select.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>

下一步是创建一个类myBean,并使用这个字符串来选择您想要呈现的UI myBean.java

在bean中使用这个导入

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
并在类 中使用此代码
public class myBean {
String action;
public void setAction(String action) {
    this.action = action;
}
public String getAction() {
  return action;
}

}

但是要记住这一行要放到一个类

@ManagedBean
@SessionScoped

相关内容

  • 没有找到相关文章

最新更新