# Bean Validation (JSF 2.0) funktioniert nicht.



## Schackeline (21. Nov 2010)

Moinsen,

habe ein Problem mit Bean validation. Wäre toll, wenn mir jemand helfen könnte!
In meinem Lib-Verzeichnis sind die folgenden jar's eingebunden:
hibernate-validator-4.1.0.Final
hibernate-jpa-2.0-api-1.0.0.Final
log4j-1.2.14
slf4j-api-1.5.6
slf4j-log4j12-1.5.6
validation-api-1.0.0.GA

Entwicklungsumgebung ist eclipse helios, als Server nutze ich Tomcat 7.

Hier die Datei Kredit.java:

```
Kredit.java

import java.math.BigDecimal;

import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.DecimalMax;


public class Kredit {
	@DecimalMin("1.01") @DecimalMax("5.0")
	private BigDecimal nomZins;
	//[...]

	public BigDecimal getNomZins() 
	  {return nomZins;} 
	
	public void setNomZins(BigDecimal nomZins) 
	  {this.nomZins = nomZins;}
	//[...]
}
```

Hier die Datei KreditBean.java

```
KreditBean.java

public class KreditBean {
	private Kredit meinKredit = new Kredit();
	//[...]
	
    	public String rechnen(){
    		//[...]
    	}
	
	public Kredit getMeinKredit() {
		return meinKredit;
	}

	public void setMeinKredit(Kredit meinKredit) {
		this.meinKredit = meinKredit;
	//[...]
}
```

Und hier noch die input.xhtml:

```
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core">

	<head>
        <title>
            <h:outputText value="Kreditdaten eingeben"/>
        </title>
    </head>
    <body>
    	<h:messages showDetail="true" showSummary="false"/>
    	<ui:composition template="/META-INF/templates/kreditTempl.xhtml">
		<ui:param name="title" value="Testtitel kredit_Input"/>
		<ui:define name="content">
        	<h1><h:outputText value="Kreditdaten eingeben"/></h1>
       		<h:form id="form">
			<h:panelGrid id="grid" columns="2">
			<h:outputLabel value="Nominalzins in %"/>
			<h:inputText id="nomZins" required="true" value="#{kreditBean.meinKredit.nomZins}">
			</h:inputText>
			
			[.....]

            		</h:panelGrid>
           	<h:commandButton id="rechnen" action="#{kreditBean.rechnen}" value="Rechnen"/>
		</h:form>
		</ui:define>
	</ui:composition>	
	</body>
</html>
```

Ergebnis auch bei Falscheingabe des Nominalzinses ist, dass trotzdem die Methode rechnen() aufgerufen wird. Was mache ich falsch?

Merci + Gruß, Schackeline


----------



## megaflop (25. Nov 2010)

Hallo!

Zwei Ideen:

Versuchs mal mit einem <f:validateBean/> innerhalb deines inputText-Tags.

Zweite Idee:


```
@Valid
private Kredit meinKredit = new Kredit();
```

Grüße, Jonas


----------



## Schackeline (26. Nov 2010)

megaflop hat gesagt.:


> Versuchs mal mit einem <f:validateBean/> innerhalb deines inputText-Tags.


Das bringt eine erhellende Erkenntnis: "Bean Validation is not present".

Hier die ganze Meldung:


> Exception while validating component with path : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /kredit_Input.xhtml][Class: javax.faces.component.html.HtmlForm,Id: form][Class: javax.faces.component.html.HtmlPanelGrid,Id: grid][Class: javax.faces.component.html.HtmlInputText,Id: nomZins]}
> 
> Caused by:
> javax.faces.FacesException - Bean Validation is not present



Leider bin ich ziemlich ratlos. Mehr als die zugehörigen Bibliotheken einzubinden ist doch hier nicht zu tun, oder?
Habe ganz normal über die Project-Properties die o.a. Bibliotheken mit "Add External JARs" eingefügt.

Gruß Schackeline


----------



## megaflop (26. Nov 2010)

Also ich hab nach einem kurzen Blick in die Hibernate Validator Doku nichts über irgendwelche Konfiguration gefunden.

Überprüfe nochmal, ob die JAR's korrekt in deinem Classpath sind. Vielleicht hat der Hibernate Validator auch Abhängigkeiten zu anderen Libs, die du noch nicht hast - was besseres fällt mir dazu nicht ein.

Grüße, Jonas


----------



## Schackeline (28. Dez 2010)

megaflop hat gesagt.:


> Vielleicht hat der Hibernate Validator auch Abhängigkeiten zu anderen Libs, die du noch nicht hast


Das war in der Tat das Problem. Habe mir jetzt das m2eclipse-Plugin installiert, und nun klappt das auch mit den Dependencies. :toll:


----------

