Bean Validation (JSF 2.0) funktioniert nicht.

Schackeline

Mitglied
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:
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
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:
Java:
<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
 
Hallo!

Zwei Ideen:

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

Zweite Idee:

Java:
@Valid
private Kredit meinKredit = new Kredit();

Grüße, Jonas
 
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
 
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
 

Neue Themen


Zurück
Oben