# JSF: Parameterübergabe an Properties-Datei aus JSF-Tag heraus?



## mmeyer1987 (11. Mrz 2009)

Moin,

Ich komme an einer Stelle auf meiner Faces-Seite nicht weiter. ???:L Ich habe eine Propertiesdatei, die folgende Zeile beinhaltet:

"valWertUng=Wert ungueltig {0}"

Die {0} steht für einen Platzhalter, den man in Java über 

String text = properties.getProperty("valWertUng");
String dynText = "Testtext";
System.out.println(MessageFormat.format(text,dynTe xt));

ersetzen kann. Aber wie geht das auf einer JSF-Seite? 

Da hole ich mir den Eintrag der Properties in einem JSF-Tag so:

value="#{mb_TexteBean.properties['valWertUng']}"

Habe ich da auch eine Chance, den Parameter zu übergeben? :bahnhof:

Vielen Dank!

Grüße!


----------



## gex (12. Mrz 2009)

Jo, das kannst du machen, hier hat es ein Beispiel:
How to use Resource Bundle in JSF?

Gruss


----------



## mmeyer1987 (12. Mrz 2009)

Guten Morgen, 

Danke für die Antwort erst einmal. Habe nun festgestellt, das ich dann wohl den Renderer, bzw. das Holen der Property erweitern muss. Ich nutze folgende Tag-Lib:

<%@ taglib uri="http://sourceforge.net/projects/jsf-comp/clientvalidators" prefix="cv" %>


Und in der jsp-Seite sieht das so aus:

<cv:lengthValidator style="messages"componentToValidate="inpDNBNr" display="dynamic"	
errorMessage="#{mb_TexteBean.properties['valMaxLaenge1']}"max="9">
   <faram value="Apple"/>
</cv:lengthValidator>


Die Base des Validators holt sich zwar das ValueBinding, allerdings keine Child-Komponenten, um diese den Parametern zuzuweisen. Das werd ich wohl implementieren müssen. :autsch: Oder? Gibts einfachere Möglichkeiten?

Danke!

Grüße,

Manuel Meyer


----------



## gex (12. Mrz 2009)

Soweit ich weiss kannst du über die EL keine Parameter setzen. Du hast eigentliche 3 Optionen, wenn du diese Funktionalität mit den clientvalidators verwenden willst.
- Du initialisierst ein Bean, welches das Map-Interface implementiert (denn dann kannst du mittels ['xy'] Parameter übergeben - workaround), als Wert könntest du dann angeben 'valMaxLaenge1aram1aram2' und parst diesen String im Bean und löst dort die Message auf. Ist halt ein Workaround Ansatz.
- Du erweiterst die CV Implementation, so dass diese auch jsf param's bzw. attribute ausliest und gegebenenfalls beim MessageFormat einbezieht.
- Erstellung einer Custom EL Function, Weiss gerade nicht, wie das am besten geht, da du JSPs benutzt, mit Facelets ist es jedoch ganz einfach. Ansatzpunkt sind sicherlich die ganzen Resolver / Mapper der JSF API.


----------



## mmeyer1987 (13. Mrz 2009)

Moin gex,

Danke für die Hinweise. Habe es gestern bereits gelöst. Lese mir die Child-Komponenten aus (UIParameter) und dann gehts per search and replace durch den String um die Parameter meinen Platzhaltern zuzuweisen.


Danke für deine Hilfe!


Grüße!


----------

