2013-07-18 175 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();" /> 

希望它有助于某人。