2009-08-14 4 views
0

Я борюсь с небольшой проблемой интернационализации в одном из моих приложений. История выглядит следующим образом:Доступ к JSF SelectItem.Label и значение из XHTML без selectOneMenu

У меня есть дата, которая отображает записи и selectOneMenu в порядке , чтобы выбрать столбец dataTable для фильтрации. SelectOne - , поданный с помощью SelectItems, которые заполняются в соответствии с фактической локалью в бэкэнде на время DataRefresh.

Теперь, когда пользователь меняет локаль, содержимое selectOne остается в старой локали до тех пор, пока страница не будет перезаписана. Это вполне логично и ожидаемо.

Конечно, я хочу, чтобы это изменилось.

Поэтому я попытался написать собственный selectOne, который использует selectItems, которые содержат ссылки на записи languageFile, чтобы иметь возможность их изменять без реиндеринг.

Вот что я пытался

<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> 

К сожалению JSF рассказывает мне деталь не имеет этикетки или значение свойства, которое я с трудом верю. ;)

У кого-нибудь есть идея, как получить доступ к этим свойствам таким образом?

ответ

0

Я решил проблему с сохранением фильтрующих полей дважды. Один раз для каждого языка - рендеринг времени выполнения, который отображается. Не очень хороший, но он работает. Could'nt получить changeListener going ...

1

Мне кажется, вы должны написать:

#{item.value} 

вместо #{item.Value}, так как стандартные JavaBeans конвенция иметь getXyz() поглотитель для xyz собственности.

Кроме того, почему вы не указываете valueChangeListener компоненту пользовательского интерфейса для выбора локали, а затем внутри него заполняете метки элементов для этого языкового стандарта. Таким образом, вы можете использовать стандартный тег f:selectItems.

+0

thx для ответа, я могу получить доступ к свойствам сейчас. Мой д'оо. Я согласен с тем, что valueChangeListener будет лучшим способом . Я не совсем уверен, как интегрировать его в мое приложение. На самом деле у меня есть LanguageSelectioBean, который отображает два флага , которые меняют локаль при щелчке через commandLinks. -> Может ли командные ссылки запускать событие valueChange? Secondy my datatable - это компонент, который я использую в нескольких местах в своем приложении. Мне нужно расширить его, чтобы он прослушивал для valueChanges и запрашивал языковые файлы onValueChange, правильно? thx K – KB22

0

Вы также можете сделать так, чтобы ваши командные ссылки повторно отображали страницу так, чтобы она автоматически делала то, что вам нужно. Не знаю, соответствует ли это вашим требованиям или нет. :)

Смежные вопросы