Attualmente sto provando a convalidare alcuni valori front-end con alcuni metodi lato server (come gruppo) e sto riscontrando problemi relativi al risultato.Come accedere correttamente al campo dati in un risultato a4j: jsFunction
Ecco l'XHTML per il pulsante che inizia tutto:
<h:commandButton action="#{Bean.save()}"
value="Save"
id="save"
onclick="checkForConfirmation();" />
E il javascript, parte del quale le chiamate di pulsanti, l'altra parte del quale il JsFunction chiama
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;
}
E infine, la jsFunction che è la parte problematica:
<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>
Il problema è che, per verso la fine di questa catena di eventi, l'avviso (dati) nell'attributo 'oncomplete' mostra che i dati non sono definiti. Ho bisogno che questo sia definito per sapere se mostrare o meno un dialogo di avvertimento.
Posso confermare che il metodo Bean.shouldBeConfirmed() è effettivamente in esecuzione, con i parametri corretti, e in effetti restituendo il valore corretto, e anche impostando il valore della variabile Bean.booleanResult (che è un normale java booleano). Cosa sto facendo di sbagliato qui?
Questa è di gran lunga la mia domanda più popolare. Immagino che molte persone abbiano questo problema. Saluti per trovare una soluzione alternativa e grazie per averlo condiviso! – Ben
Prego :) Infatti è un problema molto comune! Mi chiedo perché la community di JBoss non documenta trucchi come questo in un unico posto. – Nikhil
Perché non includerlo nella guida alla migrazione? Questo mi ha aiutato molto, grazie. NON FISSATO IN 4.1 – Toskan