venerdì 29 marzo 2013

PrimeFaces aggiungere parametri da processare via ajax

In un form avevo la seguente problematica.
Dopo aver settato un valore di un inplace editor (quindi un inplace associato ad un inputText) viene scatenata una chiamata Ajax che recupera dei dati dalla sessione , fa alcune elaborazioni e quindi rieffettua l'update di un pannello sul form.
Il problema segnalato era che modificando una textarea interna del pannello con l'in place ancora aperto (senza aver cliccato sulla casella di spunta) una volta sottomessa la chiamata Ajax il valore della textArea andava perduto.
Quindi avevo la necessità di portarmi dietro anche il valore della textArea nella chiamata Ajax, in modo che fosse recuperato lato server e non perso.
Con il tag p:ajax questo è molto semplice, basta settare l'attributo "process".
Dalla javadoc di primefaces la descrizione dell'attributo è la seguente:

Component(s) to process in partial request. Defaults to @this.

Quindi basta scrivere nell'atributo process l'id del componente da processare.

Esempio:


<p:inplace id="val_sog" editor="true" 
rendered="#{verificaComplessiva.daModificare 
and verificaComplessiva.stato!='K'}" >  
<p:inputText value="#{verificaComplessiva.punteggio_soggettivo_ope}" immediate="true" />  
<p:ajax event="save" listener="#{workflowTabManager.updateVerificaComplessiva}" 
 process="val_sog txtNote" update="verificaComplessivaPanel"/> 
</p:inplace>                                           

Nel metodo "updateVerificaComplessiva", recuperando dalla sessione il bean, si trova anche il valore della text area, invece prima invece il campo testo era vuoto.


HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
HttpSession session = (HttpSession) request.getSession();
VerificaComplessiva vc = (VerificaComplessiva) session.getAttribute("verificaComplessiva");





Nessun commento:

Posta un commento