Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung - XPages => Thema gestartet von: manderson am 12.06.12 - 15:06:00

Titel: Bei xp:message Ausgabe lade CSS
Beitrag von: manderson am 12.06.12 - 15:06:00
Hallo,

kann ich irgendwie eine weitere CSS (mit)laden wenn ich für ein xp:message eine Ausgabe bekomme? Also wenn ein Fehler für Feld XYZ vorliegt lade Stylesheet XYZ.

Clientseitige Validierung ist aus...
Titel: Re: Bei xp:message Ausgabe lade CSS
Beitrag von: ata am 12.06.12 - 15:21:53
... was hast du denn genau vor - dein Konstrukt ist eventuell gar nicht notwendig
Titel: Re: Bei xp:message Ausgabe lade CSS
Beitrag von: manderson am 12.06.12 - 15:25:15
Muss für ein div, in dem ein Auswahlfeld liegt, die Styleangaben ändern wenn kein Wert ausgewählt worden ist ....
Titel: Re: Bei xp:message Ausgabe lade CSS
Beitrag von: Sven Hasselbach am 12.06.12 - 15:28:03
Muss es der gesamte Div sein, oder sollen nur die Felder hervorgehoben werden?

In letzterem Fall siehe hier:
http://dontpanic82.blogspot.de/2011/07/xpages-styling-invalid-field.html (http://dontpanic82.blogspot.de/2011/07/xpages-styling-invalid-field.html)
Titel: Re: Bei xp:message Ausgabe lade CSS
Beitrag von: manderson am 12.06.12 - 15:30:20
leider der div :(
Titel: Re: Bei xp:message Ausgabe lade CSS
Beitrag von: ata am 12.06.12 - 15:32:37
... der div hat doch eine ID - dann sprich ihn doch direkt an und ändere den Style...
Titel: Re: Bei xp:message Ausgabe lade CSS
Beitrag von: Sven Hasselbach am 12.06.12 - 15:52:48
Hier ein kleines Snippet:

Code
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
	<xp:div>
		<xp:this.style><![CDATA[#{javascript:
			var style = "background-color:rgb(128,0,255)";
			var cids = facesContext.getClientIdsWithMessages();
			
			while( cids.hasNext() ){
  				var id = cids.next();
  				if( facesContext.getMessages( id ) != null ) return style;
 			}
 			}]]>
 		</xp:this.style>
		<xp:inputText id="inputText1" required="true"
			value="#{requestScope.fillMe}">
		</xp:inputText>
	</xp:div>
	<xp:button value="Label" id="button1"><xp:eventHandler event="onclick" submit="true" refreshMode="complete" immediate="false" save="true"></xp:eventHandler></xp:button>

</xp:view>
Titel: Re: Bei xp:message Ausgabe lade CSS
Beitrag von: manderson am 13.06.12 - 09:36:12
Super! Das Snippet von Sven hilft schon!

Muss es nur noch hin bekommen das nicht bei  allen divs (wo ich den code eingefügt habe) nun die Farbe gewechselt wird, sondern nur bei denen mit der Fehlermeldung des beinhaltenden Feldes....

Dachte es geht einfach in dem ich die var name ändere, klappt aber leider nicht. Ist jemand von den Meistern hier so nett und kann mir verraten warum?

Code
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

	<xp:messages id="messages1"></xp:messages>

	<xp:div>
		<xp:this.style><![CDATA[#{javascript:
			var style = "background-color:rgb(128,0,255)";
			var cids = facesContext.getClientIdsWithMessages();
			
			while( cids.hasNext() ){
  				var id = cids.next();
  				if( facesContext.getMessages( id ) != null ) return style;
 			}
 			}]]>
 		</xp:this.style>
		<xp:inputText id="inputText1" required="true">
		<xp:this.validators>
			<xp:validateRequired message="Fehler Feld 1"></xp:validateRequired>
		</xp:this.validators></xp:inputText>
</xp:div>
<xp:div>
		<xp:this.style><![CDATA[#{javascript:
			var style2 = "background-color:rgb(128,0,0)";
			var cids2 = facesContext.getClientIdsWithMessages();
			
			while( cids2.hasNext() ){
  				var idx = cids2.next();
  				if( facesContext.getMessages( idx ) != null ) return style2;
 			}
 			}]]>
 		</xp:this.style>
		<xp:inputText id="inputText2" required="true">
		<xp:this.validators>
			<xp:validateRequired message="Fehler Feld 2"></xp:validateRequired>
		</xp:this.validators></xp:inputText>
</xp:div>
	

	<xp:button value="Beschriftung" id="button1"><xp:eventHandler event="onclick" submit="true" refreshMode="complete" immediate="false" save="true"></xp:eventHandler></xp:button></xp:view>
Titel: Re: Bei xp:message Ausgabe lade CSS
Beitrag von: manderson am 13.06.12 - 10:36:58
Ha! Java-Kollege hat geholfen:

Code
<xp:this.style><![CDATA[#{javascript:
			var style = "background-color:rgb(128,0,0)";
			var firstMsg = facesContext.getMessages( 'view:_id1:inputText1' )
 			return firstMsg.hasNext() ? style:'';
			}]]>
</xp:this.style>