JSF - ui中的动态'name'属性:insert

时间:2014-01-09 20:50:47

标签: jsf

在下面的代码中,登录后,ui:include是OK(更改),outputText是OK(更改),ui:insert没有更改。

所引用:

<html xmlns="http://www.w3.org/1999/xhtml" (...) >
  <h:head></h:head>
  <h:body>
    <p:panel header="LoginForm" >
      <ui:insert name="#{userBean.loggedIn?'logoutForm':'loginForm'}" />
      <ui:include src="#{userBean.loggedIn?'incA.xhtml':'incB.xhtml'}" /> 
      <h:outputText value="#{userBean.loggedIn?'print logoutForm':'print loginForm'}" />
    </p:panel>
  </h:body>
</html>

的index.xhtml:

<ui:composition template="template.xhtml"
xmlns="http://www.w3.org/1999/xhtml" (...) >
  <ui:define name="loginForm">
    <h:form >
      <p:inputText id="usernameInput" value="#{credentialsBean.username}" />
      <p:password id="passwordInput" value="#{credentialsBean.password}"  /> 
      <p:commandButton value="Log in" action="#{loginBean.actionLogin}" ajax="false" type="submit" />
    </h:form>
  </ui:define>
  <ui:define name="logoutForm" >
    <h:form >
      <p:commandButton value="Logout" type="submit" action="#{loginBean.actionLogout}" ajax="false" /> 
    </h:form>
  </ui:define>
</ui:composition>

这是正常行为吗?

1 个答案:

答案 0 :(得分:0)

ui:insert的name属性在构建JSF树阶段进行评估。使用ui:include而不是ui:insert以获得快乐。