1

内部にフォームがある PopupPanel があります。フォームは以前に ajax によってレンダリングされていたため、リッチフェイスのいくつかの問題/バグによりa4j:commandButton、属性を使用してフォームの外側に配置することを余儀なくされましたexecute

ボタンを押すと、サーバーが呼び出されますが、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、Mojarra 2.1.9、および Richfaces 4 を使用しています。

4

1 に答える 1

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"。これはwork 4 u..

于 2012-07-24T09:21:25.667 に答える