# JSF "Eigener Validator" Wie reagiert man auf ein l



## Guest (28. Mrz 2007)

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:


```
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?


----------



## Guest (28. Mrz 2007)

```
...
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. 

```
String strValue = (String) value; 
       
    if (value instanceof String &&
```


----------



## WeirdAl (29. Mrz 2007)

Huhu,

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


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

Cu


----------



## Guest (29. Mrz 2007)

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.


----------

