未在commandButton上设置托管bean属性

时间:2014-09-08 11:18:19

标签: jsf primefaces

我的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组件应填充所选值,但它似乎为空 - 我错过了什么?

1 个答案:

答案 0 :(得分:0)

结果是遗忘的c:set将初始值重新发布到textarea组件。 <{1}}被删除后问题得以解决。