2010-11-29 52 views
0

我有一個頁面加載(在panelGroup)兩個不同的頁面,由於登錄狀態(記錄,沒有記錄)。這是主開關:JSF - 問題與@ViewScope

template.xhtml P.S. selector.page的 「主頁」 爲默認

<h:panelGroup layout="block" styleClass="contenitore"> 
    <h:panelGroup layout="block"> 
     <h:panelGroup layout="block" styleClass="menu_table" id="login"> 
      <ui:insert name="login_homepage" /> 
     </h:panelGroup> 

     <h:panelGroup layout="block" id="content"> 
      <c:catch> 
       <ui:include src="/#{selector.page}/#{selector.page}.xhtml" /> 
      </c:catch> 
     </h:panelGroup> 
    </h:panelGroup> 
</h:panelGroup>   

homepage.xhtml

<h:panelGroup rendered="#{!user.loggedIn}"> 
    <h:panelGroup layout="block" styleClass="content_title"> 
     Homepage 
    </h:panelGroup> 
</h:panelGroup> 
<h:panelGroup rendered="#{user.loggedIn}"> 
    <ui:include src="/profile/profile.xhtml" /> 
</h:panelGroup> 

login

<ui:define name="login_homepage"> 
    <h:form id="formLogin" prependId="false"> 
     <h:inputHidden value="#{selector.page}" id="page" /> 

     <h:panelGroup rendered="#{!user.loggedIn}"> 
      <h:outputScript name="jsf.js" library="javax.faces" target="head" /> 

      <h:outputLabel styleClass="menu_span" value="Username" /> 
      <h:inputText value="#{user.nickname}" id="nickname" /> 
      <h:outputLabel styleClass="menu_span" value="Password" /> 
      <h:inputSecret value="#{user.password}" id="password" /> 

      <h:outputLabel styleClass="menu_span"> 
       <h:commandButton value="Login" action="#{user.checkLogin}"> 
        <f:ajax event="action" execute="nickname password page" render=":login :content err"/> 
       </h:commandButton> 
      </h:outputLabel> 
     </h:panelGroup> 

     <h:panelGroup rendered="#{user.loggedIn}"> 
      <h:outputLabel styleClass="menu_title" value="LOGGED" /> 
     </h:panelGroup> 
    </h:form> 
</ui:define> 

profile.xhtml

<h:panelGroup layout="block" id="profileContent"> 
    <h:form id="formProfile"> 
     <h:outputScript name="jsf.js" library="javax.faces" target="head" /> 

     <h:panelGroup rendered="#{profileSelector.profilePage=='main'}"> 
      <ui:include src="/profile/profile_main.xhtml" /> 
     </h:panelGroup> 

     <h:panelGroup rendered="#{profileSelector.profilePage=='edit' || profileSelector.profilePage=='editConfirm'}"> 
      <ui:include src="/profile/profile_edit.xhtml" /> 
     </h:panelGroup> 
    </h:form> 
</h:panelGroup> 

簡介選擇器是@ViewScope的作用域。當我加載頁面和im記錄時,它初始化ProfileSelector bean。否則,如果我沒有登錄,我做登錄,它將內容從主頁更改爲配置文件,但Bean沒有啓動。那麼,當我沒有登錄時,如何初始化這個bean?

我認爲上面的代碼足以理解問題。

乾杯

回答

0
<c:catch> 
       <ui:include src="/#{selector.page}/#{selector.page}.xhtml" /> 
      </c:catch> 

的問題是,您使用的突破@ViewScope使用替代JSTL元素。

+0

那麼,如何解決這一問題?刪除捕獲? – markzzz 2010-11-29 17:42:56