2009-08-14 15 views
0

Ich habe Probleme mit einem kleinen Internationalisierungsproblem in einer meiner Apps. Die Geschichte geht so:Zugriff auf JSF SelectItem.Label und Value von XHTML ohne selectOneMenu

Ich habe eine Datentabelle, die Datensätze anzeigt, und ein selectOneMenu in der Reihenfolge , um eine Spalte der Datentabelle auszuwählen, nach der gefiltert werden soll. Die selectOne ist gefüttert mit SelectItems, die entsprechend der tatsächlichen Gebietsschema in der Backing Bean auf DataRefresh Zeit gefüllt sind.

Jetzt, wenn der Benutzer das Gebietsschema ändert, bleibt der Inhalt von selectOne im alten Gebietsschema , bis die Seite neu gerendert wird. Dies ist ziemlich logisch und erwartet.

Natürlich möchte ich das ändern.

So habe ich versucht, eine eigene selectOne schreiben, die selectItems die Verweise auf Sprachdatei-Einträge, um sie ändern, ohne rerendering zu können, enthalten verwendet.

Hier ist, was ich

versucht
<select id="j_id5:filterSelector" name="j_id5:filterSelector" size="1"> 
    <c:forEach var="item" items="#{gridBean.filterFields}"> 
     <option value="#{item.Value}">#{msg[item.Label]}</option> 
    </c:forEach> 
</select> 

Leider JSF sagt mir das Element kein Label oder Value-Eigenschaft hat, die ich kaum glauben. ;)

Hat jemand eine Idee, wie man auf diese Weise auf diese Eigenschaften zugreifen kann?

Antwort

0

Ich löste das Problem mit dem Speichern der Filterfelder zweimal. Einmal für jede Sprache - Laufzeitentscheidung, die gerendert wird. Nicht ein netter, aber es funktioniert. Konnte nicht den ChangeListener gehen ...

1

Es scheint mir, sollten Sie schreiben:

#{item.value} 

statt #{item.Value}, als Standard Java Beans Konvention ist getXyz() Getter für xyz Eigenschaft zu haben.

Geben Sie auch einen valueChangeListener an die UI-Komponente für die Gebietsschemaauswahl an, und füllen Sie dann die Auswahlelementelabels für dieses Gebietsschema aus. Auf diese Weise können Sie den Standard f:selectItems Tag verwenden.

+0

thx für die Antwort, ich kann jetzt auf die Eigenschaften zugreifen. Mein d'oh. Ich stimme zu, dass ein WertChangeListener wäre der bessere Weg zu gehen. Ich bin mir nicht sicher, wie ich es in meine App integrieren soll. Ich habe eine LanguageSelectioBean, die zwei Flags anzeigt, die das Gebietsschema beim Klicken ändern, über CommandLinks. -> können Links über command ein valueChange-Ereignis auslösen? Secondy meine Datentabelle ist eine Komponente, die ich in mehreren Standorten in meiner App verwende. Ich muss es erweitern, um es zu hören für valueChanges und requery die Sprachdateien onValueChange, richtig? thx K – KB22

0

Sie könnten es auch so machen, dass Ihr Befehl Links die Seite neu rendern, so dass es automatisch tut, was Sie es brauchen. Ich weiß nicht, ob dies Ihren Anforderungen entspricht oder nicht. :)

Verwandte Themen