2012-10-29 42 views
2

我有一個菜單,裏面有一個列表項和一個p:commandLink。雖然在不同的頁面上使用它,我意識到我在更新表單時遇到問題,其中p:dataTablep:columns在裏面。點擊鏈接後,form2實際上有一些面板和裏面的表應該更新。現在我的問題:只有大多數的內容在form2被正確更新,但p:columns舊的的值。如果我再次點擊鏈接,則會顯示正確的值。JSF p:commandLink和p:ajax在更新中有不同的行爲

正確調用Bean方法public void selectProject(Project myProject)並正確處理值。

現在奇怪的事情:如果我添加了p:ajax一切h:graphicImage工作正常!

<h:form id="form1"> 
    ... 
    <li> 
    <p:commandLink update=":form2" actionListener="#{bean.selectProject(p)}"> 
     <h:outputText value="#{p.name}" /> 
    </p:commandLink> 
    <!-- Code below is for testing only, but works fine! --> 
    <h:graphicImage value="#{iconBean.icon(12,'clock')}"> 
     <p:ajax event="click" update=":form2" listener="#{bean.selectProject(p)}"/> 
    </h:graphicImage> 
    </li> 
    ... 
</h:form> 

更新這似乎並不可能與p:columns,簡化的測試案例顯示p:commandLink預期的行爲。在原始(仍然失敗)設置中,菜單作爲複合組件實現。

+1

是你的表格嵌套?不要在Web開發中嵌套表單,它會導致各種類型的DOM問題,例如您遇到的問題 – kolossus

回答

2

作爲一種變通方法我用

<h:commandLink> 
    <h:outputText value="#{p.name}"/> 
    <p:ajax event="click" update=":form2" listener="#{bean.selectProject(p)}"/> 
</h:commandLink> 
相關問題