2012-07-24 51 views
1

我有一个带有窗体的PopupPanel。该表单以前是由ajax渲染的,所以通过richfaces的一些问题/错误,我不得不将a4j:commandButton置于表单之外,并使用execute属性。未使用Ajax更新Bean值

当我点击按钮时,它调用服务器,但bean值没有更新。

有什么建议吗?

我的形式

简单求代码:

<rich:popupPanel id="workOrderPopup" modal="true" resizeable="true" 
onmaskclick="#{rich:component('workOrderPopup')}.hide()" width="750" height="420"> 
    <h:form id="editWorkOrderForm" onkeypress="if (event.keyCode == 13) { document.getElementById('workOrderEdition:saveWO').click(); return false; }"> 
      [[[FORM FIELDS]]] 
    </h:form> 
    <a4j:commandButton id="createWO" value="Guardar" action="#{ticketCont.saveWorkOrder()}" 
      render="workOrders,footer" execute="editWorkOrderForm" oncomplete="#{rich:component('workOrderPopup')}.hide()"/> 
</rich:popupPanel> 

我的形式完整代码:

<rich:popupPanel id="workOrderPopup" modal="true" resizeable="true" 
onmaskclick="#{rich:component('workOrderPopup')}.hide()" width="750" height="420"> 
    <h:form id="editWorkOrderForm" onkeypress="if (event.keyCode == 13) { document.getElementById('workOrderEdition:saveWO').click(); return false; }"> 
    <table width="100%" id="editWorkOrderTable"> 
     <tr> 
     <td> 
      <h:outputText value="ID" for="editedWOId"/><br/> 
      <h:inputText value="#{ticketCont.workOrder.id}" id="editedWOId" readonly="true" size="7"/> 
     </td> 
     <td> 
      <h:outputText value="Descripción" for="editedWODescription"/><br/> 
      <h:inputText value="#{ticketCont.workOrder.description}" id="editedWODescription"/> 
     </td> 
     <td> 
      <h:outputText value="Estado" for="editedWOState"/><br/> 
      <h:selectOneListbox value="#{ticketCont.workOrder.status}"> 
      <f:selectItem itemLabel="Abierto" itemValue="0"/> 
      <f:selectItem itemLabel="Cerrado" itemValue="1"/> 
      </h:selectOneListbox> 
     </td> 
     <td> 
      <h:outputText value="Tiempo (en horas)" for="editedWOTime"/><br/> 
      <rich:inputNumberSpinner value="#{ticketCont.workOrder.workHours}" inputSize="4"/> 
     </td> 
     </tr> 
     <tr> 
     <td colspan="4"> 
      <div align="center"> 
      <h:outputText value="Recursos" for="editedWOResources"/><br/> 
      <rich:pickList value="#{ticketCont.workOrder.resources}" var="_resource" listHeight="200px" id="editedWOResources"> 
       <f:selectItems value="#{ticketCont.activeResources}"/> 
       <f:converter converterId="es.caib.gesma.gesman.data.converter.ResourceConverter" /> 
       <rich:column> 
       #{_resource.name} 
       </rich:column> 
      </rich:pickList> 
      </div> 
     </td> 
     </tr> 
    </table> 
    </h:form> 
    <a4j:commandButton id="createWO" value="Guardar" action="#{ticketCont.saveWorkOrder()}" 
      render="workOrders,footer" execute="editWorkOrderForm" oncomplete="#{rich:component('workOrderPopup')}.hide()"/> 
</rich:popupPanel> 

我使用JBoss 6.1,钻嘴鱼科2.1.9和RichFaces的4

回答

2

我认为问题不在于此代码,而是从其他单击您的editWorkOrderForm渲染的问题,因为你从不工作... 因为你可以这样做..

<rich:popupPanel id="workOrderPopup" modal="true" resizeable="true" 
    onmaskclick="#{rich:component('workOrderPopup')}.hide()" width="750" height="420"> 
     <h:form id="editWorkOrderForm" onkeypress="if (event.keyCode == 13) { document.getElementById('workOrderEdition:saveWO').click(); return false; }"> 
     <a4j:outputpanal id="editWorkOrderPanal"> 
     <table width="100%" id="editWorkOrderTable"> 
      <tr> 
      <td> 
       <h:outputText value="ID" for="editedWOId"/><br/> 
       <h:inputText value="#{ticketCont.workOrder.id}" id="editedWOId" readonly="true" size="7"/> 
      </td> 
      <td> 
       <h:outputText value="Descripción" for="editedWODescription"/><br/> 
       <h:inputText value="#{ticketCont.workOrder.description}" id="editedWODescription"/> 
      </td> 
      <td> 
       <h:outputText value="Estado" for="editedWOState"/><br/> 
       <h:selectOneListbox value="#{ticketCont.workOrder.status}"> 
       <f:selectItem itemLabel="Abierto" itemValue="0"/> 
       <f:selectItem itemLabel="Cerrado" itemValue="1"/> 
       </h:selectOneListbox> 
      </td> 
      <td> 
       <h:outputText value="Tiempo (en horas)" for="editedWOTime"/><br/> 
       <rich:inputNumberSpinner value="#{ticketCont.workOrder.workHours}" inputSize="4"/> 
      </td> 
      </tr> 
      <tr> 
      <td colspan="4"> 
       <div align="center"> 
       <h:outputText value="Recursos" for="editedWOResources"/><br/> 
       <rich:pickList value="#{ticketCont.workOrder.resources}" var="_resource" listHeight="200px" id="editedWOResources"> 
        <f:selectItems value="#{ticketCont.activeResources}"/> 
        <f:converter converterId="es.caib.gesma.gesman.data.converter.ResourceConverter" /> 
        <rich:column> 
        #{_resource.name} 
        </rich:column> 
       </rich:pickList> 
       </div> 
      </td> 
      </tr> 
     </table> 
<a4j:commandButton id="createWO" value="Guardar" action="#{ticketCont.saveWorkOrder()}" 
       render="workOrders,footer" oncomplete="#{rich:component('workOrderPopup')}.hide()"/> 
</a4j:outputPanal> 
     </h:form> 
    </rich:popupPanel> 

现在点击弹出是render="editWorkOrderPanal"开有这工作4 U ..

+2

好吧,这个当过我喜欢。 – SJuan76 2012-07-24 10:27:45