2013-03-13 4 views
0

который забрать данные из БД (Postgre),my commandbutton не работает, JSF + primefaces?

эту страницу первый список данных в списке то у меня есть commandlink «modificar» Wich переноса данных из элемента щелкнул в диалоговом , но я не знаю, почему командная кнопка в этом диалоговом окне не вызывает метод «DAOEventos.modificarEvento» .... в конце у меня есть кнопка, которая регистрирует данные в db из диалогового окна, это нормально работает

Единственная проблема, с диалогом поступает из командной строки!

Я сделал отладку, и проблема связана с «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> 

+3

http://stackoverflow.com/questions/2118656/hcommandlink-hcommandbutton-is-not-being-invoked/2120183#2120183 – BalusC

ответ

1

Вы гнездятся один HTML form внутри другого HTML form, которое не является действительным понятием в HTML. Даже если вы делаете это в компоненте конечного рендеринга JSF, будет только HTML. Поэтому удалите <h:form id="form"> из вашего кода или постарайтесь сохранить все вышеуказанные коды в одной форме.

Check here : How to use <h:form> in JSF page? Single form? Multiple forms? Nested forms?

1

Как сказал SrinivasR, вы не должны (хотя это может работать нормально). Но я думаю, что проблема здесь с местом, где вы определяете:

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

Вы должны поставить его вне DataTable.

<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> 

+0

на самом деле я в 3-х раздельный форм для первой части, то второе диалоговое окно и третий диалог, но у меня проблемы с значением обновления из первого диалога modaldialog2 – MitoCode

+0

Можете ли вы дать несколько пояснений? Вы помещали диалоговое окно вне datatable? какие «проблемы с обновлением ...» вы столкнулись? –

+0

ну, я поместил диалог на улицу, но можете ли вы поставить мне именно код, пожалуйста, – MitoCode

Смежные вопросы