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