Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 将属性对象从.xhtml发送到bean时出错_Jsf_Primefaces - Fatal编程技术网

Jsf 将属性对象从.xhtml发送到bean时出错

Jsf 将属性对象从.xhtml发送到bean时出错,jsf,primefaces,Jsf,Primefaces,我有这个.xhtml文件。这是一个数据表页面,有三个按钮,一个用于创建用户,一个用于编辑用户,一个用于删除用户。正在创建和删除用户,但未进行更新。当我调用actionListener={usuariosBean.RealizarUsuario}方法时,我得到了所有参数,但没有得到Id,我得到的是0,而不是用户的真实Id 我曾尝试在不同的.xhtml中使用它,效果很好,所以我认为问题在于.xhtml文件,但是。。。我不知道。有人能帮我吗?非常感谢 <?xml version='1.0' en

我有这个.xhtml文件。这是一个数据表页面,有三个按钮,一个用于创建用户,一个用于编辑用户,一个用于删除用户。正在创建和删除用户,但未进行更新。当我调用actionListener={usuariosBean.RealizarUsuario}方法时,我得到了所有参数,但没有得到Id,我得到的是0,而不是用户的真实Id

我曾尝试在不同的.xhtml中使用它,效果很好,所以我认为问题在于.xhtml文件,但是。。。我不知道。有人能帮我吗?非常感谢

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">

<body>

<ui:composition template="./../template.xhtml">

    <ui:define name="content">
        <p:growl id="msgs" showDetail="true" />

        <h:form>
            <p:commandButton update=":formCrear" icon="ui-icon-document"
                title="Crear Usuario" value="Crear Usuario"
                oncomplete="PF('usuarioDialogCrear').show();">
            </p:commandButton>
        </h:form>

        <h:form id="form">

            <p:dataTable var="usuario" value="#{usuariosBean.usuarios}"
                paginator="true" rows="10">

                <p:column headerText="Id">
                    <h:outputText value="#{usuario.id}" />
                </p:column>

                <p:column headerText="Nombre de Usuario">
                    <h:outputText value="#{usuario.nombreDeUsuario}" />
                </p:column>

                <p:column headerText="Contraseña">
                    <h:outputText value="#{usuario.contrasenya}" />
                </p:column>

                <p:column headerText="Rol">
                    <h:outputText value="#{usuario.rol}" />
                </p:column>

                <p:column headerText="" style="text-align:center; width:4%">
                    <p:commandButton update=":form:usuarioActualizar" id="Actualizar"
                        icon="ui-icon-pencil" title="Actualizar"
                        oncomplete="PF('usuarioDialogActualizar').show();">
                        <f:setPropertyActionListener value="#{usuario}"
                            target="#{usuariosBean.usuarioSeleccionado}" />
                    </p:commandButton>
                </p:column>

                <p:column headerText="" style="text-align:center; width:4%">
                    <p:commandButton update=":form:usuarioEliminar" id="Eliminar"
                        icon="ui-icon-close" title="Eliminar"
                        oncomplete="PF('confirmacion').show();">
                        <f:setPropertyActionListener value="#{usuario}"
                            target="#{usuariosBean.usuarioSeleccionado}" />
                    </p:commandButton>
                </p:column>

            </p:dataTable>

            <p:dialog header="Actualizar Usuario"
                widgetVar="usuarioDialogActualizar" modal="true" showEffect="fade"
                hideEffect="explode" resizable="false" width="400">
                <p:outputPanel id="usuarioActualizar" style="text-align:center;"
                    layout="block">

                    <p:panelGrid columns="2">
                        <h:outputText value="Id " />
                        <p:inputText
                            value="#{usuariosBean.usuarioSeleccionado.id}"
                            style="font-weight:bold" size="37" />
                        <h:outputText value="Usuario: " />
                        <p:inputText
                            value="#{usuariosBean.usuarioSeleccionado.nombreDeUsuario}"
                            style="font-weight:bold" size="37" />
                        <h:outputText value="Contraseña: " />
                        <p:inputText
                            value="#{usuariosBean.usuarioSeleccionado.contrasenya}"
                            style="font-weight:bold" size="37" />
                        <h:outputText value="Rol " />
                        <p:inputText value="#{usuariosBean.usuarioSeleccionado.rol}"
                            style="font-weight:bold" size="37" />
                    </p:panelGrid>

                </p:outputPanel>

                <f:facet name="footer">
                    <p:commandButton update=":form, :msgs" id="btnActualizarAceptar"
                        icon="ui-icon-disk" title="Guardar Usuario"
                        value="Actualizar Usuario"
                        actionListener="#{usuariosBean.actualizarUsuario}"
                        oncomplete="PF('usuarioDialogActualizar').hide()">
                    </p:commandButton>

                    <p:commandButton id="btnActualizarCancelar" icon="ui-icon-close"
                        title="Cancelar" value="Cancelar" type="button"
                        onclick="PF('usuarioDialogActualizar').hide()">
                    </p:commandButton>
                </f:facet>
            </p:dialog>

            <p:confirmDialog
                message="¿Está seguro que desea eliminar el usuario?"
                showEffect="bounce" hideEffect="explode" header="Eliminar Usuario"
                severity="alert" widgetVar="confirmacion">
                <p:outputPanel id="usuarioEliminar" style="text-align:center;"
                    layout="block">
                    <h:inputHidden value="#{usuariosBean.usuarioSeleccionado.id}" />
                </p:outputPanel>

                <p:commandButton id="confirmarDialogo" value="Aceptar"
                    icon="ui-icon-check" update=":form, :msgs"
                    oncomplete="PF('confirmacion').hide()"
                    actionListener="#{usuariosBean.eliminarUsuario}" />

                <p:commandButton id="cancelarDialogo" icon="ui-icon-close"
                    title="Cancelar" value="Cancelar"
                    oncomplete="PF('confirmacion').hide()">
                </p:commandButton>
            </p:confirmDialog>
        </h:form>

        <h:form id="formCrear">
            <p:dialog header="Crear Usuario" widgetVar="usuarioDialogCrear"
                modal="true" showEffect="fade" hideEffect="explode"
                resizable="false" width="400">

                <p:outputPanel id="usuarioCrear" style="text-align:center;"
                    layout="block">

                    <p:panelGrid columns="2">
                        <h:outputText value="Usuario: " />
                        <p:inputText value="#{usuariosBean.nombreDeUsuario}"
                            required="true" size="37" />
                        <h:outputText value="Contraseña: " />
                        <p:inputText value="#{usuariosBean.contrasenya}" required="true"
                            size="37" />
                        <h:outputText value="Rol " />
                        <p:inputText value="#{usuariosBean.rol}" required="true"
                            size="37" />
                    </p:panelGrid>
                </p:outputPanel>

                <f:facet name="footer">
                    <p:commandButton update=":form, :msgs" id="btnCrearAceptar"
                        icon="ui-icon-disk" title="Guardar Usuario"
                        value="Guardar Usuario" action="#{usuariosBean.guardarUsuario}"
                        oncomplete="PF('usuarioDialogCrear').hide()">
                    </p:commandButton>
                    <p:commandButton id="btnCrearCancelar" icon="ui-icon-close"
                        title="Cancelar" value="Cancelar"
                        oncomplete="PF('usuarioDialogCrear').hide()">
                    </p:commandButton>
                </f:facet>

            </p:dialog>
        </h:form>


    </ui:define>

</ui:composition>

</body>
</html>

最佳实践是将表单放入对话框中。我不知道confirmdialog会去哪里,但我认为它应该在主窗体中。模板中没有表单,对吗?我刚刚按照primefaes showcase所说的做了。。。我在模板中没有表单。不管怎样,我会尽力告诉你!谢谢在Usuario类中是否有适当的id属性设置器?请注意,通常在JEE应用程序中,id是一个只读属性,当实体被持久化时,可能会自动分配。在这种情况下,更新这个属性是没有意义的。我不想更新id,我只想将它发送到bean。使用“删除”方法可以很好地工作,但不使用更新我不知道为什么。。。我已经用另一种方式实现了它,这不是我想要做的,但在这一刻它将是好的。。。我会研究这个问题,当我有更多的空闲时间,我告诉你们所有!