2013-07-18 75 views
0

嘗試加載和更新從數據表中的屬性,以嵌入在primefaces模式盒的一種形式:更新實體屬性模態

1)的數據表的命令到用戶的數據發送給模態

<p:commandButton value="alterar" 
         action="#{usuarioMB.carregarAlteracao(u)}" update=":usuarioDesc" 
         process="@this" onclick="dlg.show();" /> 

2)在模態對話框

<p:dialog id="modalDialog" header="Alterar Usuário" widgetVar="dlg" 
      modal="true" height="260" appendToBody="true" dynamic="true" > 
      <h:form id="usuarioDesc" styleClass="formTamanho"> 
       <h:panelGrid id="#{msg.pnlIdProfile}" columns="2" 
        columnClasses="labelPanelGrid, contentPanelgrid"> 
        <p:outputLabel value="Perfil:" /> 
        <p:outputLabel value="#{usuarioMB.usuario.perfil.nome}" /> 
       </h:panelGrid> 

       <h:panelGrid id="#{msg.pnlIdLogin}" columns="2" 
        columnClasses="labelPanelGrid, contentPanelgrid"> 
        <p:outputLabel value="#{msg.lblLogin}" for="usuario_login" /> 
        <p:inputText value="#{usuarioMB.usuario.login}" id="usuario_login" 
         required="true" requiredMessage="#{msg.msgReqLogin}" /> 
       </h:panelGrid> 

       <h:panelGrid id="nomeUsuario" columns="2" 
        columnClasses="labelPanelGrid, contentPanelgrid"> 
        <p:outputLabel value="Nome:" for="usuario_nome" /> 
        <p:inputText value="#{usuarioMB.usuario.nome}" id="usuario_nome" 
         required="true" /> 
       </h:panelGrid> 

       <h:panelGrid id="emailUsuario" columns="2" 
        columnClasses="labelPanelGrid, contentPanelgrid"> 
        <p:outputLabel value="Email:" for="usuario_email" /> 
        <p:inputText value="#{usuarioMB.usuario.email}" id="usuario_email" 
         required="false" /> 
       </h:panelGrid> 


       <h:panelGrid id="#{msg.pnlIdCal}" columns="3" 
        columnClasses="labelPanelGrid, contentPanelgrid"> 
        <p:outputLabel value="#{msg.lblBirth}" for="#{msg.calId}" /> 
        <p:calendar value="#{usuarioMB.usuario.nascimento}" 
         id="#{msg.calId}" locale="#{msg.calLocale}" showButtonPanel="true" 
         navigator="true" /> 
        <p:outputLabel value="(Ex: 16-04-1980)" /> 
       </h:panelGrid> 
       <br /> 
       <div id="btnForms" style="margin-left: 120px;"> 
        <p:commandButton value="Alterar Usuário" id="alt_usuario" 
         action="#{usuarioMB.alterar()}" update=":usuarioDataTable:tableUsuarios" 
         process="@this" style="margin-left:5px;" oncomplete="dlg.hide();"/> 

        <p:commandButton value="Criar nova senha e mandar por email" 
         id="alt_senha" 
         action="#{usuarioMB.sendEmail(usuario.email)}" 
         process="@this" 
         style="margin-left:5px;" /> 
        <p:commandButton value="Cancelar" onclick="dlg.hide();" 
         style="margin-left:5px;" /> 
       </div> 
      </h:form> 
     </p:dialog> 

3)加載以及用戶的屬性當我通過模態中的字段修改的屬性,然後使用命令行動「alterar」,則託管bean仍然保留對用戶原始數據的引用,並且不會發生更新。

public String alterar() { 

     try { 
      gerenciarUsuarioBean.alterar(usuario); 
      JSFMessageUtil.sendInfoMessageToUser("Usuário salvado com sucesso!"); 

     } catch (DaoExcecao e) { 
      LOG.error(e); 
      JSFMessageUtil.sendErrorMessageToUser("Erro cadastrando usuário !"); 
     } 
     usuario = new Usuario(); 
     return "/views/gerencia/gerenciarUsuarios.xhtml"; 
    } 

簡而言之,用戶的屬性自動合併到數據庫中。任何幫助是值得歡迎..

回答

0

確定,然後有一個在命令按鈕有點混亂的(處理/更新)

1)的數據表CMD:

<p:commandButton value="alterar" 
          action="#{usuarioMB.carregarAlteracao(u)}" update=":usuarioDesc:usr" 
          process="@this" onclick="dlg.show();" /> 

2)更新按鈕

<p:commandButton value="Alterar Usuário" id="alt_usuario" 
          action="#{usuarioMB.alterar()}" 
          update=":usuarioDataTable:tableUsuarios" process="@form" 
          style="margin-left:5px;" oncomplete="dlg.hide();" /> 

希望它有助於某人。