style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Como pasar el valor del resultado de la invocación de un metodo de ManagedBean (JSF) a javascript

Tengo el siguiente problema:

Estoy realizando una prueba de concepto sobre un servicio web que debe de tener 2 entradas de datos para poder generar una cadena binaria que sera utilizada para generar una firma (una serie de numeros), para esta prueba estoy usando JSF. Mediante el ManagedBean de JSF consumo el servicio web para generar la cadena binaria esto invocando el metodo enviar dentro de la primera página de la vista (formulario.xhtml), dicha cadena se la tengo que pasar a una funcion javascript que se carga al inicio de la invocación de la segunda página (binario.xhtml) para poder generar la serie de numeros que seria la firma pero no he encontrado como hacerlo, agradeceré cualquier tipo de ayuda, por cierto solo puedo utilizar jsf y javascript, ya se que con primefaces o alguna otra implementación esto seria más facil pero es requisito hacerlo solo con el core de JSF, a continuación dejo el código que tengo:

El bean:

@ManagedBean
@SessionScoped
public class Datos {

        private String dato1;
        private String dato2;
        private String resultado;

        public String getDato1() {
                 return branch;
        }

        public void setDato1(String dato1) {
                this.dato1 = dato1;
        }

        public String getDato2() {
                return dato2;
         }

        public void setDato2(String dato2) {
                this.dato2 = dato2;
        }

        public String enviar() {
                //Esta es la clase del cliente de Web Service
                MyServiceClient service = new MyServiceClient();
                resultado = service.generarBinario(cato1,dato2);               
                return "";
        }

        public String getResultado() {
                return resultado;
         }

}

La página formulario.xhtml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
        xmlns:h="http://xmlns.jcp.org/jsf/html"
        xmlns:f="http://xmlns.jcp.org/jsf/core"
<h:head>
        <title>Formulario</title>
        <meta http-equiv="keywords" content="enter,your,keywords,here" />
        <meta http-equiv="description" content="A short description of this page." />
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</h:head>
<h:body>
<h:form>
                <h:panelGrid columns="2">
                        <h:column>
                                <h:outputText value="dato1" />
                        </h:column>
                        <h:column>
                                <h:inputText value="#{datos.dato1}" />
                        </h:column>
                        <h:column>
                                <h:outputText value="dato2" />
                        </h:column>
                        <h:column>
                                <h:inputText value="#{datos.dato2}" />
                        </h:column>
                </h:panelGrid>
                <h:commandButton action="#{datos.enviar}" value="Generar binario" />
</h:form>

<h:form id="forma">
        <!-- El valor del inputText es el que lee el calculo de la operacion enviar y es el que necesito pasar a la otra pagina  binario.xhtml-->
        <h:inputText id="binary" value="#{datos.resultado}" readonly="true" size="150">
                <f:ajax />
        </h:inputText>
        <br/>
        <br/>
        <h:commandButton action="binario" value="mostrar binario"/>
</h:form>

</h:body>
</html>

Las página binario.xhtml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
        xmlns:h="http://xmlns.jcp.org/jsf/html"
        xmlns:f="http://xmlns.jcp.org/jsf/core" xml:lang="en" lang="en">
<h:head>
        <title>JSF 2.2 Page</title>
        <meta http-equiv="keywords" content="enter,your,keywords,here" />
        <meta http-equiv="description"content="A short description of this page." />
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</h:head>

<!--Aqui es donde necesito pasarle a la funcion startStop como argumento el resultado de la ejecución del metodo enviar cuando se presiona el boton de la página formularioTransaccion.xhtml-->

<h:body onload="startStop();">
       
        <h:form>
                        <h:outputScript library="js" name="presentaBinario.js" target="body" />
                        <div class="square" id="umDiv"></div>                  
        </h:form>
</h:body>
</html>

Gracias por su ayuda.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Por partes

Primero que nada: Deja de usar la anotación @ManagedBean se prefiere el uso de @Named desde hace rato. Además te permite usar estos mismos beans en otras cosas, no los limita a JSF cómo lo hace @ManagedBean.

Luego para pasarle el dato a startStop. ¿Trataste hacer eso?

<!-- Todo el resto del código -->
<h:body onload="startStop('#{bean.valor}');">

Y obviamente que startStop reciba un parámetro. Así me ha funcionado en otros casos, claro, habría que agregar esa propiedad en el backing bean (el que te recomiendo que cambies a @Named).

Así es cómo yo lo haría, parece extraño pero es "válido".

Imagen de Cid

Así lo hice pero con la otra anotación

Asi lo hice pero con la anotacion @ManagedBean, realizaré los cambios con CDI y checo a ver si funciona gracias.

.....

Ya lo hice con la anotación solo que estaba invocando mal a la función de javascript.

Gracias.

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">