2013-03-26 33 views
0

我有一個命令按鈕,它綁定了它的操作方法。如果導航保持不變,樣式不會加載JSF頁面

<f:view > 
    <pm:page title="Title"> 
     <pm:view id="viewId" swatch="c"> 
      <p:outputPanel id="panelId"> 
       <h:form id="formId"> 

    <p:commandButton action="#{bean.actionMethod}" update="formId" value="Click" /> 
          </h:form> 
        </p:outputPanel> 
       </pm:view> 
    </pm:page > 
</f:view> 

內部操作方法。導航引用同一頁面。一些值在動作方法內更新。

public String applyPeriod(String caller) 
{ 
    ..... 
    retrun SAMEPAGE; 
} 

一切都好。但樣式不呈現。該頁面將返回到默認樣式。

任何想法如何加載樣式。我不想通過進行真正的更新來更改URL。我應該通過ajax調用來管理它。

我跟蹤頁面的請求。風格完全沒有要求。

我使用primefaces,primefaces mobile,它是一個移動頁面。

+0

如果您的託管bean重新初始化,請檢查您的bean的屬性是否也重新初始化爲某個默認值。 – 2013-03-26 08:30:41

+1

相關:http://stackoverflow.com/questions/8634156/how-to-reference-components-in-jsf-ajax-cannot-find-component-with-identifier/你當前的更新客戶端ID正在尋找' ** **裏面的表單,它不是指表單本身。 – BalusC 2013-03-26 16:15:16

回答

2

如果你沒有使用:背後表單的ID我相信問題可以與一個部件相對於搜索,試圖尋找基於相對標識符的形式。通過使用不同元素的ID,您可以獲得預期的行爲,因爲它們是以相對於您的<p:commandButton/>的上下文的相對方式正確引用的,所以我按下了。

嘗試使用update="@form"update=":formId"。另外,作爲一個附註,如果你想使用完整的ajax,並且你不會在任何地方重定向用戶,你的方法應該是void或者返回null

+0

詳細BalusC答案:http://stackoverflow.com/questions/8634156/how-to-reference-components-in-jsf-ajax-cannot-find-component-with-identifier/ – erencan 2013-03-27 09:13:09

0

我真的不知道背後的原因。但是,我通過給出確切的組件ID來更新commandButton的屬性來解決問題。

<p:commandButton action="#{bean.actionMethod}" update="ListOfComponentIds" value="Click" />