Verwendung von parametrisiertem MessageFormat mit Nicht-Value-Attributen von JSF-Komponenten

8

Ich habe einen Anwendungsfall, in dem ich ein Ressourcenbündel verwenden muss, um verschiedene Texte auf der Benutzeroberfläche anzuzeigen. Einige dieser Ressourcenpaketeinträge nehmen Parameter (z. B. {0}), für diese verwende ich h: outputFormat, aber manchmal ist das nicht genug.

z.B.

%Vor%

in einem Ressourcenbündel.

Um es auf xhtml anzuzeigen, mache ich normalerweise:

%Vor%

Das funktioniert gut, wenn es ein einfacher Fall ist, aber für komplexere Anwendungsfälle ist es nicht genug. Zum Beispiel, wenn das Attribut 'title' eines commandLink den obigen Eintrag im Ressourcenpaket verwenden soll:

%Vor%

was nicht funktioniert. Ich habe es auch versucht:

%Vor%

was auch nicht funktioniert, da f: attibute keine Kinder zulässt.

Auch wenn es einen Hack gibt, um dies zu umgehen (z. B. die Verwendung der Hover-Komponente von den Hauptflächen), gibt es andere Felder, die möglicherweise eine parametrisierte Nachricht erfordern.

Kennt jemand eine Möglichkeit, MessageFormat zu verwenden, das ein Argument in einem Nichtwertfeld einer JSF-Komponente verwendet?

    
Zak 17.08.2012, 04:56
quelle

1 Antwort

6

Sie könnten dafür eine benutzerdefinierte EL-Funktion erstellen Sie können schließlich wie folgt enden:

%Vor%

Sie können die MessageFormat API verwenden, um die Job, genau wie <h:outputFormat> unter den Deckeln tut.

Eine Alternative besteht darin, eine benutzerdefinierte Komponente zu erstellen, die das gleiche wie JSTLs guten 'ol <fmt:message> , das ein Attribut var unterstützt, um die formatierte Nachricht in den EL-Bereich zu exportieren.

%Vor%

Aktualisieren : JSF-Dienstprogrammbibliothek OmniFaces hat #{of:formatX()} Funktionen und eine <o:outputFormat> Komponente für den eigentlichen Zweck.

    
BalusC 17.08.2012, 17:13
quelle

Tags und Links