JSF "Eigener Validator" Wie reagiert man auf ein l

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo ich versuche gerade in JSF einen eigenen Validator zu schreiben. Alles klappt nur wenn das Eingabe Feld leer bleibt, weis ich nicht wie darauf reagieren soll.

Also hier mal das Validator Bean:

Code:
package com.meinTest;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;

public class ValidatorBean{
	
String name ;
String vorname;
	
	
public String getVorname() 
{
    return vorname;
}



public void setVorname(String vorname)
{
    this.vorname = vorname;
}



public String getName() 
{
    return name;
}



public void setName(String name)
{
    this.name = name;
}



public void yesNoValidation(FacesContext context, UIComponent component, Object value) throws ValidatorException
{
	
    String strValue = (String) value;
		
    if (value instanceof String && !("".equals(strValue))) //Hier soll bei Leeren Feld "EingabeErforderlich" Kommen
    {
			
         if(strValue.equals("ja") )
          {
	    throw new ValidatorException(new FacesMessage("Alles ok", null));
           }
            else{
	        throw new ValidatorException(new FacesMessage("Eingabe muss 'ja' entsprechen", null));
	  }
				
				
        }else{
                   throw new ValidatorException(new FacesMessage("Eingabe erforderlich", null)); //Klappt nicht??!!
                 }
			
    }
	
}
Ich habe schon versucht auf "null" zu prüfen oder "strValue.length()<1" hat nicht geklappt.
Hatt irgend Jemand eine Idee?
 
G

Guest

Gast
Code:
...
if(!isNullOrEmpty(value))
{
   // Irgendwas eingegeben
}
else
{
   // Eingabe erforderlich
}
...
boolean isNullOrEmpty(String str)
{
   return str == null || str.trim().length() == 0;
}

Übrigens, das hier ist witzig. Das instanceof kannst du dir sparen, denn wenn das
kein String ist, gibt es bereits beim Cast ein Desaster. ;)
Code:
    String strValue = (String) value; 
       
    if (value instanceof String &&
 
W

WeirdAl

Gast
Huhu,

du kannst auch den JSF-Standard-validator required="true" nutzen.

Code:
<h:inputText id="name" required="true"/>

Cu
 
G

Guest

Gast
Dein Ansatz gefallt mir nur darf man dabei nicht vergessen das es sich bei value um ein Objekt handelt.
Der Übergabe Parameter ist nicht vom gleichen Typ.

Ich habe mal ein bisschen nachgedacht und mich gefragt ob denn die Validierung überhaupt angestoßen wird wenn das Feld leer ist, denn dann gibt es ja nichts zu validieren.

Daher glaube ich das bevor die validierung ausgelöst wird vorher intern geprüft wird ob das Feld leer ist. Falls ja und die "required" nicht "true" ist wird einfach nicht darauf reagiert.

Hört sich logisch an denn dafür gibt es ja das required.

Was meint ihr dazu. ich bin Neuling und versuche möglichst viel vom ablauf zu lernen,denn dann kann man besser Planen.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben