Comment ajouter un message à un composant JSF backing bean
J'ai un h:inputText et une h:message connectés:
<h:inputText id="myText" value="#{myController.myText}" />
<a4j:outputPanel>
<h:message for="myText" .../>
</a4j:outputPanel>
Je veux envoyer un message à partir de java, comme:
FacesContext.getCurrentInstance().addMessage(arg0, arg1);
qui est envoyé à h:messages, mais à un code spécifique dans une forme spécifique.
Comment puis-je faire cela? (Sans la mise en œuvre de la validation de haricots ou de validation de méthode - sens, sans jeter exception de validation).
OriginalL'auteur Benchik | 2011-03-13
Vous devez vous connecter pour publier un commentaire.
Vous devez fournir les dits
client id
, que vous trouverez surUIComponent
.Ce qui suit est un exemple de comment les utiliser.
De considérer les éléments suivants bean:
être utilisé sur les points suivants Facelet:
Cela va ajouter un Visages message avec le contenu "msg Test" pour le outputText composant utilisé dans l'exemple.
Oui, vous pouvez saisir l'ID de la balise être envoyer à votre navigateur. Mais selon ce qui est assez fragile, ce code peut changer lorsque vous déplacez votre composant ou d'ajouter d'autres composants de votre point de vue.
OK, mais j'ai besoin d'envoyer des messages sans liaison. Un moyen facile de trouver le clientId à partir de l'Id? (Sans TLD fonctions)
Compte tenu de la (relative) de l'id d'un élément, vous ne pouvez pas universellement calculer le clientId. La JSF spec seulement besoin de ces Identifiants à être unique dans le cadre d'un conteneur de dénomination. Si vous pensez que ceux relatifs Id sont assez unique dans votre application, vous pourriez localiser le composant à partir de la vue de la racine à l'aide de findComponent, par exemple
context.getViewRoot().findComponent("myText")
C'est ce que je cherchais. Merci!
OriginalL'auteur Arjan Tijms
Une autre façon de le faire est: donner un ID à la forme, à l'instar de "form1", puis, lorsque vous ajoutez le message, le clientId est "form1:test".
OriginalL'auteur user2166787