Style bei fehlerhafter Eingabe (Bean Validation) ändern

Schackeline

Mitglied
Moin,

ich möchte bestimmte Styles von Eingabefeldern bei fehlerhafter Eingabe ändern. Habe mir den unten stehenden Code aus dem Internet gezogen. Funkioniert soweit auch gut.

Problem: kopiere ich den gleichen Code in eine zweite Komponente (Eingabefeld), dann wird das erste Eingabefeld nicht mehr angezeigt. Systemmeldung: "PanelGrid form:grid has not enough children. Child count should be a multiple of the columns attribute." Habe Ihr eine Idee, wie ich das hinbekomme?

Achja, die Validierung erfolgt mittels BeanValidation über die ManagedBean "MeineBean".

Hier die Klasse ValidBean:
Java:
@ManagedBean
@RequestScoped
public class ValidBean {
	private UIComponent myComponent;
	public UIComponent getMyComponent() {
		return myComponent;
	}
	public void setMyComponent(UIComponent myComponent) {
		this.myComponent = myComponent;
	}
	public String getErrorStyle() {
		FacesContext context = FacesContext.getCurrentInstance();
		String clientId = myComponent.getClientId(context);
		Iterator<FacesMessage> messages = context.getMessages(clientId);
		while (messages.hasNext()) {
			if (messages.next().getSeverity().compareTo(FacesMessage.SEVERITY_ERROR) >= 0) {
				return "background-color: coral";}
		}
	return null;
	}
}
Und hier die zugehörige Eingabe-Komponente:
Code:
<h:inputText id="meinInputFeld" required="true" size="4" maxlength="4"	value="#{meineBean.meineVar}" 
	binding="#{validBean.myComponent}" style="#{validBean.errorStyle}">
		<f:convertNumber/>
</h:inputText>

Merci + Gruß, Schackeline
 

KYLT

Mitglied
Hi,
entwickelst du in JSF 1.2 oder 2.0? - Für letzteres schonmal versucht nur die StyleClass zu verändern?
Java:
styleClass="#{!component.valid ? 'error' : 'none'}"
 

Schackeline

Mitglied
Funktioniert super, vielen Dank! :applaus:
Ist immer wieder erschütternd zu sehen, welchen Aufwand man für Dinge betreibt, die so einfach zum Laufen zu bringen sind...;(
 

Ähnliche Java Themen

Neue Themen


Oben