2016-11-22 95 views
0

我有一个JSF页面与命令按钮来显示对话框并显示来自数据表的数据,但问题RequestContext.getCurrentInstance()。update不会更新对话框,任何人都可以告诉我的代码有什么问题?RequestContext.getCurrentInstance()。update不起作用

这里是我的JSF代码

<h:form id="formEmp"> 
     <p:commandButton value="Edit" 
         id="buttonUpdate" 
         actionListener="#{masterRoleController.doUpdate()}"/> 

     <br/> 
     <p:separator/> 

     <p:dataTable id="dtEmployee" 
        value="#{masterRoleController.lazyUserRole}" var="dtEmp" 
        selectionMode="single" 
        selection="#{masterRoleController.userRole}" 
        rowKey="#{dtEmp.roleId}" 
        paginator="true" 
        rowsPerPageTemplate="15, 25, 50" 
        rows="15" 
        lazy="true" 
        resizableColumns="true" 
        emptyMessage="No Data" 
        styleClass="eric-panelgrid"> 

           <p:ajax event="rowSelect" 
             listener="#{masterRoleController.enableButtonEdit()}" 
             update=":formEmp:buttonDelete, :formEmp:buttonUpdate" /> 

      <p:column headerText="Id"> 
       <h:outputText value="#{dtEmp.roleId}" styleClass="eric-textInput"/> 
      </p:column> 
      <p:column headerText="Role Name"> 
       <h:outputText value="#{dtEmp.roleName}" styleClass="eric-textInput"/> 
      </p:column> 
      <p:column headerText="Role Desc" style="width: 50%"> 
       <h:outputText value="#{dtEmp.roleDesc}" styleClass="eric-textInput"/> 
      </p:column> 

     </p:dataTable> 
    </h:form> 
</center> 

<h:form id="formDlgUpdate"> 
      <p:dialog id="dlgUpdate" 
         widgetVar="widDlgUpdate" 
         header="Update Role" 
         modal="true" 
         resizable="false" 
         dynamic="true" 
         showEffect="fade" 
         hideEffect="fade" 
         draggable="false"> 
       <p:panelGrid id="pgridUpdate" columns="3" > 
        <h:outputText value="Role Name"/> 
        <h:outputText value=":"/> 
        <p:inputText id="inEmpTpName" 
           value="#{masterRoleController.userRole.roleName}" 
           required="true" 
           requiredMessage="Name must be filled." 
           maxlength="50" 
           onblur="value = value.toUpperCase(); 
              value = trim(this.value)" 
           onkeypress="return checkAlpNumeric(event)"> 
         <f:validator validatorId="com.hospital.util.validator.UniqueValidator"/> 
         <f:attribute name="table" value="user_role"/> 
         <f:attribute name="column" value="role_name" /> 
         <f:attribute name="info" value="Test Role"/> 
         <f:attribute name="actInfo" value="#{masterRoleController.actInfo}"/> 
         <f:attribute name="compare" value="#{masterRoleController.nameTemp}"/> 
        </p:inputText> 

        <h:outputText value="Role Desc"/> 
        <h:outputText value=":"/> 
        <p:inputTextarea value="#{masterRoleController.userRole.roleDesc}" 
            required="true" 
            requiredMessage="Description must be filled." 
            maxlength="100" 
            onblur="value = value.toUpperCase(); 
               value = trim(this.value)" 
            onkeypress="return checkAlpNumeric(event)"/> 

        <h:outputText value=""/> 
        <h:outputText value=""/> 
        <p:commandButton value="Edit" 
            actionListener="#{masterRoleController.update()}" 
            update="pgridUpdate"> 
        </p:commandButton> 
       </p:panelGrid> 
      </p:dialog> 
     </h:form> 

这里是我managedbean

public void doUpdate() { 
     headerInsUpd = "Update"; 
     toggleBtnInsUpd = false; 
     actInfo = "U"; 
     nameTemp = userRole.getRoleName(); 
     RequestContext.getCurrentInstance().execute("PF('widDlgUpdate').show()"); 
     RequestContext.getCurrentInstance().update("formDlgUpdate:dlgUpdate"); 
    } 

回答

-1

它不工作,因为你的对话框是DY namic(dynamic =“true”)。 你应该禁用动态行为来实现你想要的。或者在对话框打开后不更新对话框itelt,而是更新对话框中的组件。

相关问题