ajax jsf jsf-2 richfaces ajax4jsf

ajax - Cómo pasar un valor de parámetro a a4j: jsFunction



jsf-2 richfaces (3)

En mi página, tengo un botón que abre una lista de elementos en una ventana emergente. Cuando selecciono 1 elemento en la lista, quiero pasar la identificación del artículo al reverso de mi primera página. ¿Es posible? Intentó hacerlo con a4j:jsFunction y a4j:param pero no funciona.

Este es mi código:

Página 1:

<a4j:jsFunction name="renderGuarantor" render="guarantor" actionListener="#{prospectDetail.setNewGuarantor}"> <a4j:param name="param1" assignTo="#{prospectDetail.newGuarantorId}" /> </a4j:jsFunction>

popuppage:

<h:outputLink value="" onclick="window.opener.renderGuarantor(#{applicant.deposit_id});window.close();"> <h:graphicImage style="padding:0 1px; border:0" value="${path.staticRootUrl}images/confirm.gif" alt="${msg.applicantslist_select}" title="${msg.applicantslist_select}"/> </h:outputLink>

Y este es el código del bean de respaldo para la primera página

private Integer newGuarantorId; public void setNewGuarantor() { guarantor = newGuarantorId; } public Integer getNewGuarantorId() { return newGuarantorId; } public void setNewGuarantorId(Integer newGuarantorId) { this.newGuarantorId = newGuarantorId; }

Al seleccionar en la ventana emergente, se llama al método en mi bean de respaldo, pero newGuarantorId es nulo y nunca se setNewGuarantorId .

¿Hay alguna solución a mi problema?


Creo que puedes probar esto:

<a4j:jsFunction name="renderGuarantor" render="guarantor" actionListener="#{prospectDetail.setNewGuarantor(prospectDetail.newGuarantorId)}" />

Y en su bean gestionado, defina el método setNewGuarantor siguiente manera:

public void setNewGuarantor(int newGuarantorId) { guarantor = newGuarantorId; }


Intenta cambiar de actionListener a action :

<a4j:jsFunction name="renderGuarantor" render="guarantor" action="#{prospectDetail.setNewGuarantor}"> <a4j:param name="param1" assignTo="#{prospectDetail.newGuarantorId}"/> </a4j:jsFunction>

Aquí se recomienda leer sobre el tema: a4j: jsFunction


Hmm ... eso es extraño, nada parece estar mal ... No es una respuesta a tu pregunta, pero prueba esta solución: en lugar de asignarle el valor a garanteTd, guarda el <a4j:param name="param1"/> como <a4j:param name="param1"/> y en el método actionListener recupere este param1 de la solicitud como String param1 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().‌​get("param1"); . Y luego convierta este parámetro a int y utilícelo más. Eso debería funcionar