JSF 2.0 AJAX: Appel d'une méthode d'haricot à partir de javascript avec jsf.ajax.demande (ou d'une autre façon)

Un peu de contexte: je suis personnalisées composant JSF. Le composant est en fait un éditeur de texte et il devrait avoir un bouton "Sauver" pour enregistrer le contenu de la chaîne de l'éditeur. Comme je suis en utilisant le CodeMirror bibliothèque, j'ai besoin de récupérer le contenu (chaîne de caractères) à partir de l'éditeur avec le javascript et l'envoyer au serveur. Donc, dans ce cas je ne peut pas utiliser basé sur XML, JS invocation comme f:ajax.

La question: j'avais l'intention d'envoyer la chaîne avec jsf.ajax.request, mais il ne prend pas directement en charge de l'appel de méthodes sur les haricots. Comment puis-je appeler une méthode d'un bean avec la JSF en AJAX manière?

Il y a au moins deux façons de contourner ce problème:

  • Inclure une forme cachée de la page cachée inputfield. Mise à jour inputfield à partir de javascript et ensuite appeler jsf.ajax.demande de poster ce formulaire. Actions personnalisées peuvent être invoced dans la propriété du getter ou un setter si nécessaire.
  • Faire la demande auprès de raw XMLHttpRequest (ou peut-être avec l'aide d'une autre bibliothèque JS). Créer une servlet et l'appeler.

Les deux façons sont maladroits et ce dernier éclate de JSF portée.

Suis-je raté quelque chose? Comment faites-vous ces?

Il y a un tout à fait la même question, mais les réponses données ne se réfèrent à XML AJAX invocations. Il est également une autre question similaire, mais qui fait référence à XML AJAX appelle ainsi.

  • Exactement comment êtes-vous construire? Comme UIComponent ou <ui:composition> ou <composite:implementation>?
  • Celle-ci est construite tout simplement sur le dessus de ui:composition. Fondamentalement, j'ai un textarea là, que j'initialise avec JS invocation dans script élément. J'ai aussi un commandButton qui devrait fonctionner comme le bouton Enregistrer. Pourquoi importe-t-il si je suis en utilisant des composants composites ou de composants uicomponents?
  • Avec UIComponent vous pouvez simplement étendre UIInput et JSF prendra en charge la mise à jour du modèle de valeurs. Mais après réflexion, une fois de plus, c'est bien sûr délicat lorsqu'il s'agit d'une 3ème partie HTML/CSS/JS en fonction de l'éditeur. Avez-vous considéré comme un fullworthy composant JSF? E. g. PrimeFaces p:editor.
  • Bon point pour l'extension de UIInput, mais vous avez probablement raison, que dans ce cas ce n'est pas une vraiment une option. J'ai fait une rapide recherche sur les composants et également trouvé p:editor. Malheureusement, aucune des composants électriques parfaitement à nos besoins, donc j'ai eu à prendre cette voie.
  • Il y a un moyen d'appeler JSF Backing Bean méthode de Javascript