2016-03-30 7 views
0

Ich brauche Elemente für die selectOneMenu JSF-Komponente zu internationalisieren. Wie kann es für die Liste gemacht werden, die von der Datenbank erhalten hat?Wie man selectOneMenu Dropdown-Elemente internationalisieren, die von DataBase in JSF erhalten wurden?

<p:selectOneMenu id="action" value="#{mapBean.newAction}" style="width:150px"> 
         <f:selectItem itemLabel="Action" itemValue="Empty" 
          noSelectionOption="false" /> 
         <f:selectItems value="#{mapBean.actions}" /> 
</p:selectOneMenu> 

Für die mapBean.actions I dinamicaly Änderungswerte Notdurft nach Sprache ausgewählt Vorerst habe ich keine Ahnung, wie diese umzusetzen.

+1

Ist das hilfreich? http://StackOverflow.com/q/4375578 – BalusC

+0

Wie ich in diesem Artikel verstanden habe, kamen Werte von ENUM, aber meine Idee setzte Werte in die Datenbank. Erstellen Sie beispielsweise eine Tabellenaktion, die Wert und verschiedene Gebietsschemata enthält ('en', 'uk', 'ru'). Je nach ausgewähltem Gebietsschema rufen Sie neue Werte für das selectOneMenu ab. Ich möchte nur mit der Datenbank nach Werten arbeiten und keine propertalis Dateien verwenden. – Andrey

+0

Oh? Diese lokalisierten Werte stammen aus der Datenbank selbst? Mit anderen Worten, diese lokalisierten Werte befinden sich bereits in '# {mapBean.actions}'? Dann verstehe ich nicht mehr, warum du damit ein Problem hast. – BalusC

Antwort

1

Wie ich Ihre Frage verstanden haben Sie eine Liste von Objekten mit "Locale" -Eigenschaft. Und Sie möchten nur Elemente mit dem angegebenen Gebietsschema in Ihrem selectOneMenu anzeigen. Sie können etwas tun selectItems filtern:

<p:selectOneMenu id="action" value="#{mapBean.newAction}" style="width:150px"> 
          <f:selectItem itemLabel="Action" itemValue="Empty" 
           noSelectionOption="false" /> 
          <f:selectItems value="#{mapBean.actions}" 
           var="item" itemDisabled="#{item.locale ne 'en'}"/> 
    </p:selectOneMenu> 

Und dies zu Ihrer Seite CSS hinzufügen nicht deaktiviert Elemente anzuzeigen:

.ui-selectlistbox-item.ui-state-disabled { 
    display: none; 
} 

Dies ist Lösung von this answer