0

从数据库(postgre)中挑选数据,

此页面首先列出列表中的数据,然后我有一个命令链接“modificar”,它携带来自在对话框中单击的元素的数据,但我不知道为什么此对话框中的命令按钮不调用方法“DAOEventos.modificarEvento”... . 最后,我有一个按钮,可以从对话框中将数据注册到数据库,这没问题

我唯一的问题是对话框来自commandlink!

我进行了调试,问题出在“p:calendar”,如果我踢它,该方法被调用,但我需要日历中的那个值!

<h:body>
    <h:form id="form">            
        <p:dataTable style="width:100%" value="#{DAOEventos.listaEventos()}" var="even" >

            <f:facet name="header">Listado de Eventos</f:facet>
            <p:column filterBy="#{even.descripcion}" filterMatchMode="contains">
                <f:facet name="header">
                    <h:outputLabel value="Evento"/>
                </f:facet>
                <h:outputText value="#{even.descripcion}"></h:outputText>

            </p:column>
            <p:column filterBy="#{even.fec}" filterMatchMode="contains">
                <f:facet name="header">

                    <h:outputLabel value="Fecha"/>
                </f:facet>
                <h:outputText value="#{even.fec}"></h:outputText>

            </p:column>
            <p:column>
                <f:facet name="header">
                    <h:outputLabel value="Modificar"/>
                </f:facet>
                <p:commandLink value="Modificar" oncomplete="dlg2.show();" 
                               update="modalDialog2" action="#{beanEventos.traerDatos()}" style="color: black">
                    <f:setPropertyActionListener target="#{beanEventos.codEvento}" value="#{even.codEvento}" />
                    <f:setPropertyActionListener target="#{beanEventos.codSec}" value="#{even.codSec}" />
                </p:commandLink>

                <p:dialog id="modalDialog2" header="Modificar Eventos" widgetVar="dlg2" dynamic="true" resizable="false">  
                    <h:form>
                        <table>
                            <tr>
                                <td>
                                    <h:outputLabel value="Nombre Evento"/>
                                    <h:inputText id="nombre"  value="#{beanEventos.nombre}"/>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <h:outputLabel value="Descripcion Evento"/>
                                    <h:inputText id="desc"  value="#{beanEventos.descripcion}"/>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <h:outputLabel value="Fecha Evento"/>
                                    <p:calendar value="#{beanEventos.fec}" 
                                                showButtonPanel="true"/>                      
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <h:selectBooleanCheckbox value="#{beanEventos.vigencia}"/> 
                                    <h:outputText value="Vigencia" style="font-weight:bold"/>
                                </td>
                            </tr>
                            <tr>
                                <td>
                                    <h:commandButton value="Modificar" action="#{DAOEventos.modificarEvento()}" />
                                </td>
                            </tr>
                        </table>
                    </h:form>
                </p:dialog>
            </p:column>
        </p:dataTable> 

        <p/>
        <p:commandButton id="showDialogButton"  value="Agregar" oncomplete="dlg.show()" /> 

        <p:dialog header="Enter FirstName" widgetVar="dlg" resizable="false" id="dialogo"  >  
            <h:form>

                <table>
                    <tr>
                        <td>
                            <h:outputLabel value="Nombre Evento "/>
                            <h:inputText id="nombre"  value="#{beanEventos.nombre}"/>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <h:outputLabel value="Descripcion Evento "/>
                            <h:inputText id="desc"  value="#{beanEventos.descripcion}"/>
                        </td>
                    </tr>

                    <tr>
                        <td>
                            <h:outputLabel value="Fecha de Evento"/>
                            <p:calendar value="#{beanEventos.fec}" id="cal" showButtonPanel="true"/>  
                        </td>
                    </tr>

                    <tr>
                        <td>
                            <h:commandButton value="Registrar Evento"
                                             action="#{DAOEventos.insertarEvento()}"/>
                        </td>
                    </tr>
                </table>
            </h:form>
        </p:dialog>  

    </h:form>  
</h:body>

4

2 回答 2

1

正如 SrinivasR 所说,您不应该(尽管这可能很好)嵌套表格。但我认为这里的问题在于你定义你的地方:

<p:dialog id="modalDialog2">...</p:dialog>

你应该把它放在数据表之外。

<h:body>
<h:form id="form">            
    <p:dataTable style="width:100%" value="#{DAOEventos.listaEventos()}" var="even" >

        <f:facet name="header">Listado de Eventos</f:facet>
        <p:column filterBy="#{even.descripcion}" filterMatchMode="contains">
            <f:facet name="header">
                <h:outputLabel value="Evento"/>
            </f:facet>
            <h:outputText value="#{even.descripcion}"></h:outputText>

        </p:column>
        <p:column filterBy="#{even.fec}" filterMatchMode="contains">
            <f:facet name="header">

                <h:outputLabel value="Fecha"/>
            </f:facet>
            <h:outputText value="#{even.fec}"></h:outputText>

        </p:column>
        <p:column>
            <f:facet name="header">
                <h:outputLabel value="Modificar"/>
            </f:facet>
            <p:commandLink value="Modificar" oncomplete="dlg2.show();" 
                           update=":padding" actionListener="#{beanEventos.traerDatos()}" style="color: black">
                <f:setPropertyActionListener target="#{beanEventos.codEvento}" value="#{even.codEvento}" />
                <f:setPropertyActionListener target="#{beanEventos.codSec}" value="#{even.codSec}" />
            </p:commandLink>


        </p:column>
    </p:dataTable> 
</h:form> 
    <p/>
    <h:panelGroup id="padding" layout="block">
        <p:dialog id="modalDialog2" header="Modificar Eventos" widgetVar="dlg2" dynamic="true" resizable="false">  
            <h:form id="form2">     
                <table>
                    <tr>
                        <td>
                            <h:outputLabel value="Nombre Evento"/>
                            <h:inputText id="nombre"  value="#{beanEventos.nombre}"/>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <h:outputLabel value="Descripcion Evento"/>
                            <h:inputText id="desc"  value="#{beanEventos.descripcion}"/>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <h:outputLabel value="Fecha Evento"/>
                            <p:calendar value="#{beanEventos.fec}" 
                                        showButtonPanel="true"/>                      
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <h:selectBooleanCheckbox value="#{beanEventos.vigencia}"/> 
                            <h:outputText value="Vigencia" style="font-weight:bold"/>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <h:commandButton value="Modificar" action="#{DAOEventos.modificarEvento()}" />
                        </td>
                    </tr>
                </table>
            </h:form> 
        </p:dialog>
    </h:panelGroup>

    <h:form id="form3">     
    <p:commandButton id="showDialogButton"  value="Agregar" oncomplete="dlg.show()" /> 

    <p:dialog header="Enter FirstName" widgetVar="dlg" resizable="false" id="dialogo"  >  


            <table>
                <tr>
                    <td>
                        <h:outputLabel value="Nombre Evento "/>
                        <h:inputText id="nombre"  value="#{beanEventos.nombre}"/>
                    </td>
                </tr>
                <tr>
                    <td>
                        <h:outputLabel value="Descripcion Evento "/>
                        <h:inputText id="desc"  value="#{beanEventos.descripcion}"/>
                    </td>
                </tr>

                <tr>
                    <td>
                        <h:outputLabel value="Fecha de Evento"/>
                        <p:calendar value="#{beanEventos.fec}" id="cal" showButtonPanel="true"/>  
                    </td>
                </tr>

                <tr>
                    <td>
                        <h:commandButton value="Registrar Evento"
                                         action="#{DAOEventos.insertarEvento()}"/>
                    </td>
                </tr>
            </table>

    </p:dialog>  

</h:form>  

于 2013-03-13T17:06:41.693 回答
1

您将一个嵌套HTML form在另一个内部HTML form,这在 HTML 中不是一个有效的概念。即使您在 JSF 中执行此操作,最终渲染组件也只会是 HTML。因此, <h:form id="form">请从您的代码中删除或尝试将上述所有代码保留在单个表单中。

在这里查看: 如何在 JSF 页面中使用 <h:form>?单一形式?多种形式?嵌套表格?

于 2013-03-13T16:48:12.300 回答