0

我正在使用带有 Primefaces 3.2 的 JSF 2.1 的 Mojarra 实现。

我的问题大概是这样的:

<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 的更新中写这个: update=":someForm:someUIRepeat:someDataTable,:someForm:someUIRepeat:someDataTable:someInputTextArea"

然后整个 dataTable 得到更新,inputTextarea 也得到更新,但是在我单击对话框中的 commandLink 后,位于其他列中的字段中的值将被删除。

我将 dataTable 放在 ui:repeat 中的原因是我需要将一个 dataTable 与一个集合的每一行绑定,我认为这与我的问题无关。

有什么想法可以解决这个问题吗?

提前致谢,

努尔詹。

4

1 回答 1

1

for start try this

added onclick="jQuery('#someForm:someButton').click();"(check the exact id of your hidden button) to your <p:commandLink inside the dialog

set the update to update=":someForm:someUIRepeat:someDataTable"

and add

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

to <h:form id="someForm">

explanation: the purpose of the hidden button is to execute (send its values) the form to the server so that when you do call update the fields wont be erased...

于 2012-04-10T10:28:55.350 回答