Actualmente estoy tratando de validar algunos valores de front-end con algunos métodos del lado del servidor (como grupo) y estoy teniendo problemas con el resultado.Cómo acceder correctamente al campo de datos en un resultado a4j: jsFunction
Aquí es el XHTML para el botón que inicia todo:
<h:commandButton action="#{Bean.save()}"
value="Save"
id="save"
onclick="checkForConfirmation();" />
Y el javascript, parte de la cual las llamadas de los botones, la otra parte de la cual el JsFunction llama
function checkForConfirmation()
{
var name = document.getElementById("path:to:name").value;
var address = document.getElementById("path:to:address").value;
var city = document.getElementById("path:to:city").value;
var state = document.getElementById("path:to:state").value;
var zip = document.getElementById("path:to:zip").value;
jsFunc1(name, address, city, state, zip);
}
function showConfirmPrompt()
{
if(confirm('Confirmation before save'))
{
return true;
}
return false;
}
Y finalmente, la jsFunction que es la pieza problemática:
<a4j:form>
<a4j:jsFunction name="jsFunc1" action="#{Bean.shouldBeConfirmed()}" data="#{Bean.booleanResult}" oncomplete="alert(data); if (data) {showConfirmPrompt();}">
<a4j:actionparam name="param1" assignTo="#{Bean.nameToBeValidated}"/>
<a4j:actionparam name="param2" assignTo="#{Bean.addressToBeValidated}"/>
<a4j:actionparam name="param3" assignTo="#{Bean.cityToBeValidated}"/>
<a4j:actionparam name="param4" assignTo="#{Bean.stateToBeValidated}"/>
<a4j:actionparam name="param5" assignTo="#{Bean.zipToBeValidated}"/>
</a4j:jsFunction>
</a4j:form>
El problema es que, para Al final de esta cadena de eventos, la alerta (datos) en el atributo 'oncomplete' muestra que los datos no están definidos. Necesito que esto se defina para saber si mostrar o no un diálogo de advertencia.
Puedo confirmar que el método Bean.shouldBeConfirmed() se está ejecutando realmente, y con los parámetros correctos, y de hecho devolviendo el valor correcto, e incluso estableciendo el valor de la variable Bean.booleanResult (que es un booleano java normal) ¿Qué estoy haciendo mal aquí?
Esta es, de lejos, mi pregunta más popular. Supongo que mucha gente está teniendo este problema. ¡Saludos por encontrar una solución y gracias por compartirla! – Ben
De nada :) De hecho, es un problema muy común. Me pregunto por qué la comunidad de JBoss no documenta problemas como este en un solo lugar. – Nikhil
¿Por qué no incluirlo en su guía de migración? Esto me ayudó mucho, gracias. NO FIJO EN 4.1 – Toskan