JSF Getter / Setter parametrisieren

miketech

Bekanntes Mitglied
Hi,

ich möchte gerne meine Getter und Setter parametrisieren, um zu bestimmen, wo die Daten ausgelesen werden. Nun ist es ja möglich, generell Parameter anzugeben. Allerdings ist mein Problem, dass ich das nur für Methoden machen kann, aber nicht für ein JSF property, das dann mit getter und setter angesprochen wird.

Beispiel

Code:
<p:pickList value="#{managedBusinessEntitiesValueConverter.managedBusinessEntities(cc.attrs.annotation)}" var="mbe" itemValue="#{mbe}" itemLabel="#{mbe}">	    
            </p:pickList>

Hier der Java Code:

Code:
public DualListModel<String> getManagedBusinessEntities(SemanticAnnotationWrapper saw) {
		...
	}
	
	public void setManagedBusinessEntities(DualListModel<String> model, SemanticAnnotationWrapper saw) {
	...	
	}

Das funktioniert nicht, weil er die Methode managedBusinessEntities mit einem Parameter nicht findet. Es funktioniert nur mit:

Code:
<p:pickList value="#{managedBusinessEntitiesValueConverter.getManagedBusinessEntities(cc.attrs.annotation)}" var="mbe" itemValue="#{mbe}" itemLabel="#{mbe}">	    
            </p:pickList>

Nun habe ich hier aber das Problem, dass jetzt Daten nur gelesen werden. D.h. der Getter wird angesprochen. Aber was ist mit dem Setter? Das ist irgendwie nicht möglich. Oder muss die Setter-Methode dann anders aussehen, damit sie aufgerufen werden kann?

Gruß

Mike
 

nocturne

Bekanntes Mitglied
Sorry, getter haben immer 0 parameter (sonst sind es keiner getter).

Was du machen kannst ist die EL-Funktion von JBoss zu nutzen. (jboss-el.jar)
 

miketech

Bekanntes Mitglied
Hi,

danke. Aber auch die JBoss EL ermöglichen nicht das, was ich suche. Actions zu parametrisieren geht bereits, aber wenn ich ein value-Attribut damit belegen möchte, was daher auf Getter und Setter zugreifen muss, funktioniert das nicht.

Scheint wohl was sehr spezielles zu sein, daher suche ich mir lieber eine andere Lösung :)

Gruß

Mike
 

cljk

Mitglied
Ich hatte mal eine ähnliche Problematik - wollte unbed. in einer ManagedBean einen parametrisierbaren Getter haben. Letztlich habe ich einen Workaround gefunden: Verwendung des Map-Interfaces.

Man kann eine ManagedBean ein Map-Interface implementieren lassen und das teilweise implementieren und dafür Zweckentfremden. Damit geht zwar nur eine Property pro Bean und nur ein Parameter - mir hats aber geholfen.

Java:
@ManagedBean(name="xyz")
@RequestScoped
public class MeineXyzBean implements Map<Object, String> {
	@Override
	public String get(Object key) {
            //hier Wert berechnen und zurückgeben
	}
	[...]
      //Rest als Default implementieren
}

in der JSF-Seite kann ich dann schreiben
Code:
#{xyz['meinParameter']}
 
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben