Cómo activar el renderizado JSF desde jQuery

¿Es posible activar jsf? <f:ajax render> dentro de un jQuery?

Por ejemplo, algo como esto:

/* if component Y changes
    trigger render event on component Y */

$("#source_compoment").bind("change", function(e) {
    $("#target_component").trigger("render");
});

O con otras palabras, ¿hay un equivalente para "f: ajax render" dentro de jQuery?

preguntado el 22 de mayo de 12 a las 09:05

1 Respuestas

Sí, haz un botón oculto

<h:commandButton id="myHiddenButtonID" value="RenderSomething" style="display:none">
    <f:ajax render="target_component"></f:ajax>
</h:commandButton>

y haga clic en él desde js

$("#myHiddenButtonID").click();

en su caso específico se verá así:

$("#source_compoment").bind("change", function(e) {
    $("#myHiddenButtonID").click();
});

por cierto, no hay un "equivalente para" f: ajax render "dentro de jQuery", simplemente use jquery para hacer clic en un botón JSF oculto.


Editar

En caso de que el uso de la biblioteca JSF de un tercero sea relevante, puede usar el

Primefaces RemoteCommand - (usar atributo de actualización)

or

Richfaces/ a4j:jsFunction - (use el atributo reRender)

contestado el 22 de mayo de 12 a las 11:05

Esto responde exactamente a mi pregunta, pero no resuelve el problema subyacente, ya que quería evitar definir <f:ajax render"long list of ui_comps"> en cada componente, pero hágalo en un lugar dentro de jQuery. - lzdt

¿Estás seguro de que no puedes envolver esos identificadores con, por ejemplo, panelGroup y renderizarlos solo? de todos modos, tendrá que escribir esa larga lista de ui_comps si decide hacer el f:ajax usando la API JSF (no tan recomendado INMO) - Daniel

También creo que esa es una pregunta diferente ("Cómo evitar ' '"), porque envuelva esos identificadores con, digamos, panelGroup y renderice solo de una manera... - Daniel

Pregunta equivocada, de acuerdo. La agrupación es una opción. Si f:ajax render no se recomienda, ¿cuál es la forma recomendada de hacer esto? ¿Llamar a un método de frijol y hacer renderizado allí? Mi objetivo también era poder hacer una mejor cobertura de prueba unitaria para jsf-pages (es decir, estados de componentes de ui/propiedades de css y eventos activados). - lzdt

Bueno, tal vez podría resolver esto con un enfoque similar al de la publicación de Chris: community.jboss.org/thread/13915?tstart=-1&_sscc=t (con a4j:jsFunction's reRender y llamando a esa función dentro bind.("change") evento). - lzdt

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.