JSF Validator Problem HTTP Status 500

wbott@freenet.d

Aktives Mitglied
Hallo,
habe da ein Anfängerproblem, dass ich nicht verstehe.
Eine einfache JSP enthält drei Eingabefelder und eine Validatorklasse.

Scheinbar habe ich diese Klasse aber an falscher Stelle registriert/konfiguriert:
SCHWERWIEGEND: Servlet.service() for servlet FacesServlet threw exception
javax.servlet.jsp.JspException: Not nested in a tag of proper type. Error for tag with handler class:com.sun.faces.taglib.jsf_core.ValidatorTag
at javax.faces.webapp.ValidatorELTag.doStartTag(ValidatorELTag.java:111)

Hier der Quellcode der JSP (Zeile 31) :

Java:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> 
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
 
<html>
<body>
<f:view>
   <h:form>
      <%-- Einlesen des Resource-Bundles und binden an die lokale Variable msg --%>
      <f:loadBundle basename="resources.application" var="msg"/> 
      <fieldset>
         <%-- Ausgabe eines Labels aus dem Ressource-Bundle --%>
         <h3><h:outputText value="#{msg.detail_heading}"/></h3>
         <%-- Deklaration eines Grids, welches nach jeweils 3 Elementen eine neue Zeile beginnt.--%>
         <h:panelGrid columns="3">
            <%-- Ausgabe eines Labels aus den Ressourcen --%> 
            <h:outputLabel for="firstName" value="#{msg.address_firstName}"/>
            <h:inputText id="firstName" required="true"
                         value="#{addressController.currentAddress.firstName}"/>
            <h:message for="firstName"/>

            <h:outputLabel for="name" value="#{msg.address_name}"/>
            <h:inputText id="name" required="true"
                         value="#{addressController.currentAddress.name}"/>
            <h:message for="name"/>

            <h:outputLabel for="mail" value="#{msg.address_eMail}"/>
            <h:inputText id="mail" required="true" 
                     value="#{addressController.currentAddress.mail}"/>
                     <%-- Validator registrieren (f=alias für jsf-core) --%> 
                     <f:validator validatorId="eMailValidator" />             
            <h:message for="mail"/>
         </h:panelGrid>

         <h:commandButton action="#{addressController.cancel}"
                          value="#{msg.detail_cancel}"
                          immediate="true"/>
         <h:commandButton action="#{addressController.save}"
                          value="#{msg.detail_save}"/>
      </fieldset>
   </h:form>
</f:view>
</body>
</html>

Die Konfiguration (faces-config.xml):

<?xml version="1.0" encoding="UTF-8"?>

<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">

<!-- Einbinden eines eigenen Validators -->
<validator>
<validator-id>eMailValidator</validator-id>
<validator-class>jsf.EmailValidator</validator-class>
</validator>


<!-- Definition der unterstützten Locales -->
<application>
<locale-config>
<default-locale>de</default-locale>
<supported-locale>en</supported-locale>
</locale-config>
<resource-bundle>
<base-name>resources.application</base-name>
<var>msg</var>
</resource-bundle>
<message-bundle>resources.application</message-bundle>
</application>

<!-- Definition des Workflows in Form von Navigationsregeln -->
<navigation-rule>
<navigation-case>
<from-outcome>listAddresses</from-outcome>
<to-view-id>/jsp/addressList.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>editAddress</from-outcome>
<to-view-id>/jsp/addressDetail.jsp</to-view-id>
</navigation-case>
</navigation-rule>

<!-- Einbinden des Adress-Controllers -->
<managed-bean>
<managed-bean-name>addressController</managed-bean-name>
<managed-bean-class>jsf.AddressController</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

</faces-config>

und die Validatorklasse:

Java:
package jsf;
import  java.util.regex.Pattern; 
import  java.util.regex.Matcher; 
import  java.util.ResourceBundle;
import  javax.faces.context.FacesContext;
import  javax.faces.component.UIComponent;
import  javax.faces.application.FacesMessage;
import  javax.faces.validator.Validator; 
import  javax.faces.validator.ValidatorException; 

/** Validiert eMail-Adressen auf syntaktische Korrektheit */
public class [COLOR="red"]EmailValidator [/COLOR]implements Validator  {

   /** Validiert den Wert des übergebenen Objekt 'obj' */
   public void validate (FacesContext ctx, UIComponent component, Object obj) 
          throws ValidatorException  {

      // Ressourcen-Bundle laden um die Fehlermeldung auszulesen
      ResourceBundle bundle = ResourceBundle.getBundle("resources.application",
                              ctx.getViewRoot().getLocale());
      // Fehlermeldung auslesen
      String errorKey = "errors_email";
      String errorMsg = bundle.getString(errorKey);

      // Fehlermeldung im Kontext speichern, damit diese ggf. auch in der JSP zur Verfügung steht
      FacesMessage msg = new FacesMessage(errorMsg);

      // 'null' ist ebenfalls ein ungültiger Wert
      if (obj == null) {
          throw new ValidatorException(msg);
      }

      // Muster gültiger eMail-Adressen als Regular Expression
      String pattern = "^[\\w-]+(?:\\.[\\w-]+)*@(?:[\\w-]+\\.)+[a-zA-Z]{2,7}$";

      // Pattern-Instanz erzeugen und auf Gültigkeit überprüfen
      Pattern p = Pattern.compile(pattern);
      Matcher m = p.matcher(obj.toString());
      if (!m.matches()) {
         throw new ValidatorException(msg);         // Wert passt nicht auf den Ausdruck
      }
   }
}

Ich verstehe nicht wo hier das eigentliche Problem liegt.
Kann mir jemand helfen?

Gruß Willy
 
N

nillehammer

Gast
Kenne mich mit JSF nicht aus, aber ich könnte mir vorstellen, dass der Validator-Tag ein Kindelement des zugehörigen Input-Feldes sein muss. D.h. Du darfst den Tag für das Input nicht direkt schließen. Aus Deinem Code:
[XML]
<h:inputText id="mail" required="true" value="#{addressController.currentAddress.mail}"/>
<%-- Validator registrieren (f=alias für jsf-core) --%>
<f:validator validatorId="eMailValidator" />
[/XML]
Mache mal das hier:
[XML]
<h:inputText id="mail" required="true" value="#{addressController.currentAddress.mail}">
<%-- Validator registrieren (f=alias für jsf-core) --%>
<f:validator validatorId="eMailValidator" />
</h:inputText>
[/XML]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J javax.faces.validator.DoubleRangeValidator.NOT_IN_RANGE Allgemeines EE 3
G JSF "Eigener Validator" Wie reagiert man auf ein l Allgemeines EE 3
D Problem mit Update von ApacheHttpClient von 5.2 auf 5.3 Allgemeines EE 10
D Problem mit redundanten Servern Allgemeines EE 7
Azemaria JSF: Problem bei der einfachsten Applikation Allgemeines EE 2
P JPA Internal Problem Nullpointer Allgemeines EE 10
S MessageDrivenBean Problem beim Zugriff auf Stateful EJB Allgemeines EE 2
M Glassfish Deployment-Problem unter Eclipse Allgemeines EE 0
B Problem beim Lesen des Codes... Allgemeines EE 2
R JPA Problem beim Speichern eines Users Allgemeines EE 2
S WebSocket Problem Allgemeines EE 0
F Eclipse/Java EE Debug-Problem Allgemeines EE 1
G Problem: Servlet in JSP einbinden mit <jsp:include> Allgemeines EE 3
Raidri [SEAM] rich:dataTable sortBy Problem Allgemeines EE 6
T Problem mit den Beispielen von Apache Allgemeines EE 5
E JBoss 7.1 Datasource Problem Allgemeines EE 2
M JSP Problem -unbestimmte Anzahl von Werten Transportieren Allgemeines EE 9
S Problem mit EJB Verständnis Allgemeines EE 4
B Problem beim einbinden einer CSS in eine JSP Allgemeines EE 8
F JSP Problem mit Datenbankanbindung über Glassfishserver Allgemeines EE 4
S java Entities Problem Allgemeines EE 19
S Embedded JBoss Problem beim Deployment Allgemeines EE 4
E Session Problem Allgemeines EE 9
F problem mit nullpointer bei DB zugriff Allgemeines EE 2
A Erste Schritte... Problem mit Hibernate Allgemeines EE 15
ruutaiokwu jboss problem - work-verzeichnis muss manuell gelöscht werden??? Allgemeines EE 5
Stillmatic sendRedirect Problem! Allgemeines EE 3
M Problem mit Lookup auf EJB3 mit Glassfish Allgemeines EE 11
0 Problem mit librarys javax.servlet.http.HttpServletRequest cannot be resolved Allgemeines EE 1
X JBoss InitialContext problem Allgemeines EE 5
LordZed Problem mit dem einbinden von Bibliotheken, die sich gegenseitig verwenden Allgemeines EE 5
H GWT Problem beim Ausführen Allgemeines EE 8
Q Problem mit JMS und Weblogic 10 Allgemeines EE 5
E Performance-Problem beim ersten Request Allgemeines EE 4
G Multi User Problem Allgemeines EE 8
G Datasource Problem Allgemeines EE 1
J OOP Java Array Problem Allgemeines EE 2
T Problem mit Java Transaction API Allgemeines EE 2
D Problem mit EJB: Bean soll Objekt eigener Klasse zurückgeben Allgemeines EE 2
N JavaMail Problem Allgemeines EE 4
N JBoss Problem mit Bibliothek in unterschiedlichen Versionen Allgemeines EE 2
A Tomcat -- JSP: komisches Problem Allgemeines EE 11
W Speicher-Problem bei WebApp unter Tomcat, Struts, Hibernate Allgemeines EE 3
B Problem mit ActionListener Allgemeines EE 13
G Simples JSF-Projekt in Eclipse - Problem Allgemeines EE 9
O eclipse - tomcat: Problem bei einfachem Webservice Allgemeines EE 16
J Problem mit EJB Aufruf und DualCore Rechner Allgemeines EE 4
J ejb3.0 datenbank problem Allgemeines EE 2
J Problem mit Zurück-Button Allgemeines EE 2
T Tomcat: JNDI + JDBC Problem Allgemeines EE 3
J problem mit jsp/js Allgemeines EE 2
B Help - EJB2 - Problem mit Hybernate und "LIMIT" Allgemeines EE 6
B JSTL Problem Allgemeines EE 8
byte Tomcat Deployment Problem (HTTP Status 503) Allgemeines EE 8
S Problem mit t:selectOneRadio und ValueChangeListener Allgemeines EE 2
S Problem mit Struts und tiles Allgemeines EE 4
B Problem mit JBoss-4.2.1.GA Allgemeines EE 8
N Tiles - JSF Problem Allgemeines EE 3
M JSF & EJB "Bean not bound" Problem Allgemeines EE 4
V MYSQL JDBC;java.lang.ClassNotFoundException; Problem Eclipse Allgemeines EE 3
megachucky JMS - Problem mit TemporaryQueue Allgemeines EE 2
G Problem mit MimeType/ContentType Allgemeines EE 4
E Java Mail problem Allgemeines EE 5
Y XFire - Maven Build Problem Allgemeines EE 2
D JSP Problem mit equals? Allgemeines EE 2
A Eclipse Start-Problem Allgemeines EE 5
S JSF - Custom converter Problem Allgemeines EE 3
Y JSF Uhrzeitausgabe Problem Allgemeines EE 4
M servlet --> jsp - problem beim umstrukturieren Allgemeines EE 5
Y JSF - rendered Problem Allgemeines EE 1
D Servlet Problem über Server Allgemeines EE 26
Zed JSF h:inputText h:outputText update Problem Allgemeines EE 2
K mysql treiber problem wenn import java.sql.* bei _servlet_ Allgemeines EE 2
S JDBC Mysql Connection Problem - datasource null Allgemeines EE 3
T Session-Problem Allgemeines EE 2
R Tiles - Layout-Problem wegen Leerzeichen Allgemeines EE 6
G Tomcat / Eclipse oder Web.xml Problem Allgemeines EE 11
S Netbeans 5.5 Visual Web Pack Problem mit INSERT und PK Allgemeines EE 4
D JSF Problem mit Action Allgemeines EE 2
F Klassen und zugriffs Problem "Help wanted"! Allgemeines EE 16
D <input type="file"> Problem Allgemeines EE 6
N Struts - Problem mit <html:link> Action Allgemeines EE 3
A Problem / Fehler beim Einbinden einer Klasse in ein JSP Allgemeines EE 20
G Session Problem Allgemeines EE 5
T Ant Compiler Problem Allgemeines EE 9
T Problem dem Zaehler in mein Java - Code Allgemeines EE 2
A Hibernate-Problem mit MySQL-Cluster Allgemeines EE 6
H Servlet problem Allgemeines EE 10
G Problem mit Benutzerverwaltung Allgemeines EE 3
S Hibernate Mapping Problem Allgemeines EE 3
S Hibernate INSERT Problem Allgemeines EE 11
S Dummes JSP-Problem Allgemeines EE 8
P EJB-Installations-Problem Allgemeines EE 4
S CSS Problem in JSP Allgemeines EE 16
C Problem mit html:optionsCollection Allgemeines EE 4
R HILFE: Problem mit JSF examples Allgemeines EE 10
R Problem mit value-expression Allgemeines EE 7
R Problem mit for-schleife in JSP tag Allgemeines EE 8
B Struts Problem: Array in JSP ausgeben (logic:iterate) Allgemeines EE 12
M Redirct-Problem Allgemeines EE 4

Ähnliche Java Themen

Neue Themen


Oben