Hallo allerseits,
bin gerade dabei meine eigene Komponente mit JSF zu schreiben. Bislang hab ich ein Eingabefeld erstellt mit ein paar Extras. Soweit alles klar. Nun steh ich vor dem Problem das ich dem Eingabefeld einen Validator zuweisen möchte. Mein Problem liegt darin das ich nicht weiß wie ich den Validatorstaus an der Komponente überprüfen kann bzw. ich weiß nicht ob die Daten im dem Feld korrekt sind. Nach der fehlgeschlagenen Validierung soll das Eingabefeld neu gerendert werden.
Hier meine Field Klasse
Wenn ich das Ganze im Debug Modus laufen lasse sehe ich das die Varibale validator eine Validator-Instanz bekommt. Es werden jedoch keine FacesMessages ausgeben was aber eigentlich passieren sollte wenn ein Fehler auftritt.
Irgendwie muss ich doch noch den Validator an die Komponente koppeln oder nicht?
Hier dazu meine JSP Seite
Ich hoffe Ihr habt einen Tipp für mich wie ich weiter kommen kann.
Gruß Xeal
bin gerade dabei meine eigene Komponente mit JSF zu schreiben. Bislang hab ich ein Eingabefeld erstellt mit ein paar Extras. Soweit alles klar. Nun steh ich vor dem Problem das ich dem Eingabefeld einen Validator zuweisen möchte. Mein Problem liegt darin das ich nicht weiß wie ich den Validatorstaus an der Komponente überprüfen kann bzw. ich weiß nicht ob die Daten im dem Feld korrekt sind. Nach der fehlgeschlagenen Validierung soll das Eingabefeld neu gerendert werden.
Hier meine Field Klasse
Code:
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.el.MethodBinding;
import javax.faces.validator.Validator;
public class Field extends UIInput{
private String label;
private Validator validator;
private static final String COMPONENT_RENDERER = "test.FieldRenderer";
private static final String COMPONENT_FAMILY = "test.input";
public Field(){
this.setRendererType(COMPONENT_RENDERER);
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
@Override
public Object saveState(FacesContext facesContext){
Object values[] = new Object[2];
values[0] = super.saveState(facesContext);
values[1] = label;
return values;
}
@Override
public void restoreState(FacesContext facesContext, Object state){
Object values[] = (Object[])state;
super.restoreState(facesContext,values[0]);
label = values[1].toString();
}
@Override
public String getFamily(){
return COMPONENT_FAMILY;
}
@Override
public boolean isValid() {
return super.isValid();
}
@Override
public Converter getConverter() {
// TODO Auto-generated method stub
return super.getConverter();
}
@Override
public MethodBinding getValidator() {
// TODO Auto-generated method stub
return (MethodBinding) validator;
}
@Override
public void addValidator(Validator validator) {
this.validator = validator;
}
}
Wenn ich das Ganze im Debug Modus laufen lasse sehe ich das die Varibale validator eine Validator-Instanz bekommt. Es werden jedoch keine FacesMessages ausgeben was aber eigentlich passieren sollte wenn ein Fehler auftritt.
Irgendwie muss ich doch noch den Validator an die Komponente koppeln oder nicht?
Hier dazu meine JSP Seite
Code:
...
<f:view>
<h:form id="myForm">
<rs:field id="field_ID" required="true" value="" label="LABEL:" errorStyleClass="test">
<f:validateDoubleRange minimum="2" maximum="10"></f:validateDoubleRange>
</rs:field>
<h:messages></h:messages>
<h:commandButton value="Senden" action="#"></h:commandButton>
</h:form>
</f:view>
....
Ich hoffe Ihr habt einen Tipp für mich wie ich weiter kommen kann.
Gruß Xeal