# nur eine Message auf Faceskontext ausgeben



## schlumsch (8. Dez 2008)

Hallo allerseits,

ich habe da mal eine (sicher leicht zu lösende) frage zum Thema JSf Messages.
Ich schieben mehrere Message in meinen facesContext. Diese kann ich ir
auch wunderbar alle in jsf ausgeben lassen. Nun möchte ich aber nur eine
ganz bestimmte Message haben, im Beispiel unten die "myMessage".
Die Frage: wie? 

Ich danke schonmal im Voraus und poste ein wenig Code *g*...


im bean

```
addMyFacesMessage(FacesMessage.SEVERITY_INFO, "this is my Message");
addNewFacesMessage(FacesMessage.SEVERITY_ERROR, "select Language");


	private void addMyFacesMessage(Severity sev, String msg) {
		FacesMessage myMsg = new FacesMessage();
		myMsg.setDetail(msg);
		myMsg.setSeverity(sev);
		FacesContext.getCurrentInstance().addMessage("myMessage", myMsg);
	}

	private void addNewFacesMessage(Severity sev, String msg) {
		FacesMessage newMsg = new FacesMessage();
		newMsg.setDetail(msg);
		newMsg.setSeverity(sev);
		FacesContext.getCurrentInstance().addMessage(null, newMsg);
```

...und...


```
public void checkForInfos() {
		FacesContext context = getContext();
		context.getMessages("myMessage");
		if (context.getMessages().hasNext())
			setHasInfos(true);
		else
			setHasInfos(false);		
	}
```

in jsf:


```
<a4j:outputPanel rendered="#{ctrl.hasInfos}" id="infoMsgs" infoClass="portlet-form-msg-panel">
	        <h:outputText value="Infos:"  infoClass="portlet-form-msg" />

	        <h:messages showDetail="true"></h:messages>
	 </a4j:outputPanel>
```


----------



## gex (8. Dez 2008)

Hallo

Hier siehst du, welche Attribute du dem Messages-Tag setzen kannst:
http://www.jsftoolbox.com/documentation/help/12-TagReference/html/h_messages.html

Interessant ist beispielsweise die Option globalOnly, dann werden dir nur 
Messages angezeigt, die nicht an eine Komponente gebunden sind (für diejenigen verwendest du einfach ein h:message Tag mit Angabe des for-Attributes).

Ich schlage dir vor, soweit möglich deine Validierungsmessages an Komponenten zu binden,
ansonsten stell doch innerhalb deiner Business-Logik sicher, dass du nicht mehr als eine globale Message 
speicherst.

Vielleicht gibt es noch andere Ansätze, hab da erlich gesagt auch nicht lange gesucht.

Gruss


----------



## Gast (18. Dez 2008)

hallo


----------

