0

尝试将数据表中的属性加载和更新为嵌入在 primefaces 模式框中的表单:

1) 将用户数据发送到modal的datatable命令

<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)当我通过modal中的字段修改属性,然后使用命令动作“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";
    }

简而言之,用户的属性会自动合并到数据库中。欢迎任何帮助..

4

1 回答 1

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();" />

希望它可以帮助某人。

于 2013-07-19T23:43:09.660 回答