Como acessar corretamente o campo de dados em um resultado A4J: JSfunção

StackOverflow https://stackoverflow.com/questions/1365491

  •  21-09-2019
  •  | 
  •  

Pergunta

Atualmente, estou tentando validar alguns valores de front-end com alguns métodos do lado do servidor (como um grupo) e estou enfrentando problemas que lidam com o resultado.

Aqui está o xhtml para o botão que inicia tudo:

<h:commandButton action="#{Bean.save()}" 
        value="Save" 
           id="save" 
      onclick="checkForConfirmation();" />

E o JavaScript, parte da qual o botão chama, a outra parte da qual a JSFunction chama

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, finalmente, a JSFunction, que é a peça 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>

O problema é que, no final desta cadeia de eventos, o alerta (dados) no atributo 'Oncomplete' mostra que os dados são indefinidos. Eu preciso que isso seja definido para saber se deve ou não mostrar um diálogo de aviso.

Posso confirmar que o método Bean.WouldBeconFirmed () está realmente em execução, e com os parâmetros corretos, e de fato retornando o valor correto e até definindo o valor da variável Bean.BooleanResult (que é uma Java Booleana normal). O que eu estou fazendo errado aqui?

Foi útil?

Solução

Embora essa seja uma pergunta muito antiga, tive o mesmo problema com Richfaces 4 M3. Os parâmetros sugeridos por YEV não funcionaram. Então, referido ao Richfaces's Jira. De acordo com o qual, é um bug (que está no modo "não consertará", não sei por quê!), Por enquanto, a solução alternativa é usarevent.dataao invés dedatano oncomplete manipulador. Eu testei e funciona :)

Outras dicas

Eu tenho exatamente como sua configuração e funciona para mim. A única diferença é que tenho atributos extras no JSFunction:

    <a4j:form>
    <a4j:jsFunction name="jsFunc1" 
        action="#{Bean.shouldBeConfirmed()}" 
        data="#{Bean.booleanResult}" 
        oncomplete="alert(data);"
        ignoreDupResponses="true"
        eventQueue="foo">
        ...

E meus dados (seu booleanResult) é um int. Funciona bem.

Eu também enfrentei o mesmo problema. No caso de resultados booleanos, precisamos escrever o nome completo do método em vez de remover o getter ... como no seu caso, deve ser #{bean.isbooleanResult} .... deixe -me saber se o problema de cara ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top