robgeb
Mitglied
Hi. Ich bin gerade am schreiben einer eigenen Tag-Library.
folgende grundlegenden Technologien werden angewandt: JBoss4.2.3 und JSF
Solange alle Attribute eines Tags primitive Datentypen bleiben klappt ja alles wunderbar.
Jedoch will ich jetzt eine komplexe Klasse angeben. Dazu brauche ich einen weiteren Property-Editor der dann diese Klasse unterstützt. Eigentlich kein Problem, dachte ich...
hier mal der PropertyEditor
(unwichtige Methoden hab ich mal weggekürzt)
auf jeden Fall wird zuerst der PropertyEditor mit setAsText aufgerufen. Diese Angabe die da folgt (ExpressionLanguage) habe ich versucht aufzulösen. Aber komplett ohne Erfolg. Man Sieht noch wie ich dachte, dass es gehen müssen. Über javax.el.ELResolver.getValue(...) aber anscheinend weit gefehlt. Kann mir jemand helfen und sagen wie ich den Wert bekomme, der mir per ExpressionLanguage gegeben wird.
Sinnvolle Beispiele sind keine zu finden, oder ich hab nach den falschen Begriffen gesucht.
... ich wär für jede Hilfe dankbar!
vG Robert Gebhardt
folgende grundlegenden Technologien werden angewandt: JBoss4.2.3 und JSF
Solange alle Attribute eines Tags primitive Datentypen bleiben klappt ja alles wunderbar.
Jedoch will ich jetzt eine komplexe Klasse angeben. Dazu brauche ich einen weiteren Property-Editor der dann diese Klasse unterstützt. Eigentlich kein Problem, dachte ich...
hier mal der PropertyEditor
Java:
package de.meine_energie.web.taglib.property_editors;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Rectangle;
import java.beans.PropertyChangeListener;
import java.beans.PropertyEditor;
import javax.el.ELContext;
import javax.el.ELResolver;
import javax.el.ValueExpression;
import javax.faces.context.FacesContext;
import de.meine_energie.mbean.SystemMBean;
import de.meine_energie.permission.Permission;
import de.meine_energie.web.mbean.workspace.WorkspaceAction;
public class PermissionPropertyEditor implements PropertyEditor {
private Permission permission;
@Override
public String getAsText() {
System.out.println("getAsText");
return null;
}
@Override
public Object getValue() {
System.out.println("getValue");
return permission;
}
@Override
public void setAsText(String text) throws IllegalArgumentException {
System.out.println("setAStext "+text);
ELContext context = FacesContext.getCurrentInstance().getELContext();
ELResolver resolver = context.getELResolver();
permission = (Permission) resolver.getValue(context, null, text);
System.out.println("permission1: "+permission);
}
@Override
public void setValue(Object value) {
System.out.println("setValue in PropertyEditor");
permission = (Permission) value;
}
}
(unwichtige Methoden hab ich mal weggekürzt)
auf jeden Fall wird zuerst der PropertyEditor mit setAsText aufgerufen. Diese Angabe die da folgt (ExpressionLanguage) habe ich versucht aufzulösen. Aber komplett ohne Erfolg. Man Sieht noch wie ich dachte, dass es gehen müssen. Über javax.el.ELResolver.getValue(...) aber anscheinend weit gefehlt. Kann mir jemand helfen und sagen wie ich den Wert bekomme, der mir per ExpressionLanguage gegeben wird.
Sinnvolle Beispiele sind keine zu finden, oder ich hab nach den falschen Begriffen gesucht.
... ich wär für jede Hilfe dankbar!
vG Robert Gebhardt