Algunos antecedentes: Estoy creando un componente JSF personalizado. El componente es básicamente un editor de texto y debe tener un botón "Guardar" para guardar la cadena de contenido del editor. Como estoy usando la biblioteca CodeMirror, necesito buscar el contenido (cadena) del editor con javascript y enviar eso al servidor. Por lo tanto, en este caso no puedo usar la invocación JS basada en XML como f:ajax
.JSF 2.0 AJAX: llame a un método de bean desde javascript con jsf.ajax.request (o de alguna otra manera)
La pregunta: Estaba planeando enviar la cadena con jsf.ajax.request
, pero no admite directamente métodos de llamada en beans. ¿Cómo puedo invocar un método en un bean con JSF en modo AJAX?
Hay al menos dos maneras de evitar esto:
- Incluir una forma oculta a la página con InputField oculto. Actualiza ese campo de entrada desde javascript y luego llama a jsf.ajax.request para publicar ese formulario. Las acciones personalizadas pueden invocarse en el getter o setter de la propiedad si es necesario.
- Realice la solicitud con raw
XMLHttpRequest
(o tal vez con la ayuda de alguna otra biblioteca JS). Crea un servlet y llámalo.
Ambas formas son torpes y esta última también se sale del alcance de JSF.
¿Echo de menos algo? ¿Cómo haces esto?
Hay un quite similar question, pero las respuestas dadas solo se refieren a las invocaciones AJAX basadas en XML. También hay another similar question, pero eso también se refiere a llamadas AJAX basadas en XML.
¿Cómo exactamente lo estás construyendo? Como 'UIComponent' o como' 'o' '? –
BalusC
Este está construido simplemente sobre 'ui: composition'. Básicamente tengo un 'textarea' allí, que inicializo con la invocación de JS dentro del elemento' script'. También tengo un 'commandButton' que debería funcionar como el botón Guardar.¿Por qué importa si uso componentes compuestos o UIComponents? –
Con 'UIComponent' puede extender' UIInput' y JSF se ocupará de actualizar los valores del modelo. Pero después de pensar una vez más, eso es, por supuesto, complicado cuando se trata de un editor basado en HTML/CSS/JS de terceros. ¿Has considerado un componente de JSF completo? P.ej. [PrimeFaces 'p: editor'] (http://www.primefaces.org/showcase/ui/editor.jsf). – BalusC