2012-01-12 36 views
11

Ho una pagina contiene un modulo e un altro modulo annidati in una finestra di dialogo. ho bisogno di passare parametri a finestra quando il pulsante di clic nella maschera principalePassa il parametro alla finestra di dialogo nella stessa pagina

<h:form> 
<p:dataTable var="form" value="#{myBean.formList}"> 
    <p:commandButton id="selectProduct" 
          update="selectProductForm" oncomplete="selectProductDlg.show()" 
          image="ui-icon-" > 
          <f:param name="formId" value="#{form.id}" /> 
       </p:commandButton> 
</p:dataTable> 
</h:form> 

<p:dialog> 
...<h:form> 
<p:commandButton action="#{myBean.setSelected}" 
        update="main_form" 
        oncomplete="if(#{myBean.errorText == 'SUCCESS'}){ selectProductDlg.hide();}" 
        value="Sec"> 
       </p:commandButton> 


non riesco a vedere formid in MyBean con il codice:

if (form == null) { 
      HttpServletRequest req = (HttpServletRequest) FacesContext 
        .getCurrentInstance().getExternalContext().getRequest(); 
      if(req.getParameter("formId") != null) { 
       formId = Long.valueOf(req.getParameter("formId")); 
      } 
      if (formId != null && !"".equals(formId)) { 
       form = formService.findById(formId); 
      } 
     } 

dove sbaglio grazie

risposta

17

Supponendo che il bean sia nel campo di visualizzazione, basta impostarlo come bea n proprietà diretta nel metodo di azione del pulsante di comando nella colonna datatable.

<h:form> 
    <p:dataTable var="form" value="#{myBean.formList}"> 
    <p:column> 
     <p:commandButton id="selectProduct" 
         action="#{myBean.setCurrentForm(form)}" 
         update="selectProductForm" oncomplete="selectProductDlg.show()" 
         image="ui-icon-"> 
     </p:commandButton> 
    </p:column> 
    </p:dataTable> 
</h:form> 

<p:dialog> 
    <h:form> 
    <p:commandButton action="#{myBean.setSelected}" 
        update="main_form" 
        oncomplete="if(#{myBean.errorText == 'SUCCESS'}){ selectProductDlg.hide();}" 
        value="Sec"> 
    </p:commandButton> 
    </h:form> 
</p:dialog> 

Se si dispone di un pulsante di annullamento nella finestra di dialogo, è necessario lasciare che il suo metodo di azione impostarlo su null.

Non c'è bisogno di giocherellare con parametri di richiesta HTTP non elaborati nelle richieste POST. Lo <f:param> deve essere utilizzato il più possibile solo nelle richieste GET (ad esempio <h:link>, <h:button>, ecc.).

+0

grazie mille, ho usato per pensare che non posso passare il parametro al metodo di azione, ora ho modificato il mio codice e ha funzionato – merveotesi

+0

Sei il benvenuto. – BalusC

-1

Ho chiamato semplicemente la datamodel di PDataTables come mostrato di seguito.

  1. IN Java Bean Sto aggiornando i dati dal metodo backend receivedFdnsController.refreshData.
    1. Per aggiornare i dati nel modulo, sto chiamando il datamodel che aggiorna come # {receivedFdnsController.newReceivedFdnsDataModel} dopo aver nascosto la finestra di dialogo. Maggiori dettagli mostrati di seguito.

saluti Khaleel

+0

Prova a capire perché la coda di modifica suggerita è piena e perché non viene elaborata poiché il post non ha attualmente alcun modulo utile. –

Problemi correlati