2012-04-10 43 views
0

我在Primefaces 3.2中使用JSF 2.1的Mojarra實現。如何從外部更新dataTable裏面的組件

我的問題大致是這樣的:

<p:dialog id="someDialog"> 
    .. 
    <h:form id="dialogForm">   
    <p:commandLink action=".."update=":someForm:someUIRepeat:someDataTable:someInputTextArea"/> 
    </h:form> 
</p:dialog> 


<h:form id="someForm"> 
    <ui:repeat id="someUIRepeat" value=".." ..> 
    <p:dataTable id="someDataTable" value=.. > 

     <p:column> 
     <p:inputTextarea id="someInputTextarea" value=../> 
     <p:column> 

    .. here go other columns 
    <ui:repeat> 
</h:form> 

的問題是,當我在對話框中單擊commandLink的inputTextarea不會被更新。但是,如果我寫這篇文章的commandLink的更新: 更新= 「:someForm:someUIRepeat:someDataTable,:someForm:someUIRepeat:someDataTable:someInputTextArea」

那麼整個dataTable的更新,並且在inputTextarea更新爲好,但是在點擊對話框中的commandLink後,位於其他列的字段中的值會被刪除。

爲什麼我把dataTable放在ui裏面的原因是:我需要綁定一個dataTable與一個集合的每一行,我認爲它與我的問題沒有關係。

任何想法如何我可以解決這個問題?

在此先感謝,

Nurzhan。

+0

嘗試添加過程=「someForm: someUIRepeat:someDataTable「和設置更新=」:someForm:someUIRepeat:someDataTable「,這不應該清除表中的數據和更新表... – Daniel 2012-04-10 09:37:38

+0

@Daniel感謝您的回覆。我試過你的解決方案,但它並沒有奏效。當我將command =「..」添加到commandLink時,它並沒有更新任何內容,甚至沒有更新整個dataTable。 – Nurjan 2012-04-10 09:51:54

+0

對不起我的不好......它的原因 Daniel 2012-04-10 09:57:18

回答

1

的開始嘗試這種

加入onclick="jQuery('#someForm:someButton').click();"(檢查你的隱藏按鈕的確切ID)到您的<p:commandLink裏面的對話框

設置updateupdate=":someForm:someUIRepeat:someDataTable"

,並添加

<h:commandButton id="someButton" style="display:none"> 
    <f:ajax execute="@form"></f:ajax> 
</h:commandButton> 

<h:form id="someForm">

解釋:隱藏按鈕的目的是爲了執行(發送它的值)的形式向服務器,這樣,當你調用update領域不會被刪除...

+0

感謝您的幫助,但我無法解決我的問題,儘管我盡你所能完成了一切。 – Nurjan 2012-04-10 13:03:12

+0

添加onclick =「alert('a')」到「someButton」看到jquery .click()真的在做它的工作 - 因爲migth是選擇器錯了,找不到someButton按鈕 – Daniel 2012-04-10 17:33:40