我的p:dialog
包含p:dataTable
;当一行被选中时,我想启用一个p:commandButton
,当点击时,应该更新一个textarea - 但是textarea组件会在验证时出现(红色轮廓),并且值始终为null。
textarea:
<c:set property="resolution" value="#{cc.attrs.resolution}" target="#{cc.attrs.bean}" />
...
<h:outputLabel for="resolution" value="#{text['task.action.resolution']}" />
<p:inputTextarea id="resolution"
rows="10"
value="#{cc.attrs.bean.resolution}"
required="true" requiredMessage="#{text['task.action.required.resolution']}"
/>
对话框:
<p:dialog id="userNotesDialog"
widgetVar="userNotesDialogVar"
header="#{text['task.action.user_notes']}"
... >
<p:dataTable id="userNotesTable"
value="#{cc.attrs.bean.userNotesOptions}"
rendered="#{!cc.attrs.bean.userNotesOptions.isEmpty()}"
var="userNote"
selection="#{cc.attrs.bean.selectedUserNote}"
selectionMode="single" rowKey="#{userNote.id}">
<p:ajax event="rowSelect"
listener="#{cc.attrs.bean.onUserNoteSelect}"
update=":#{cc.clientId}:actionForm:chooseUserNote"
/>
<p:column>
Some content here
</p:column>
</p:dataTable>
<p:commandButton id="chooseUserNote"
disabled="#{cc.attrs.bean.selectedUserNote == null}"
value="#{text['task.action.user_notes.select']}"
action="#{cc.attrs.bean.setResolutionWithUserNote}"
oncomplete="PF('userNotesDialogVar').hide()"
update=":#{cc.clientId}:actionForm:parentPanel :#{cc.clientId}:actionForm:resolution">
<f:setPropertyActionListener target="#{cc.attrs.bean.resolution}" value="#{cc.attrs.bean.selectedUserNote.noteText}" />
</p:commandButton>
</p:dialog>
注意:整个代码由表单(actionForm
)包围。
当对话框关闭时,resolution
组件应填充所选值,但它似乎为空 - 我错过了什么?
答案 0 :(得分:0)
结果是遗忘的c:set
将初始值重新发布到textarea
组件。 <{1}}被删除后问题得以解决。