Элемент Lable в JSF2 selectOneMenu - PullRequest
       36

Элемент Lable в JSF2 selectOneMenu

0 голосов
/ 23 января 2012

Я использую selectOneMenu в приложении JSF 2, чтобы позволить пользователям выбирать день в месяце.По какой-то причине я не могу найти ярлык «Выбрать день».Вот что я делаю:

<h:selectOneMenu id="startDay" value="#{bean.day}">       
    <f:selectItem itemLabel="Select Day" itemValue=""/>
    <f:selectItems value="#{bean.days}"/>
</h:selectOneMenu>

Код в компоненте выглядит следующим образом:

private int day;
private List<Integer>days;

Который я создаю в методе инициализации @PostConstruct:

days = new LinkedList<Integer>();
for(int i=1; i<=31; i++) {
    days.add(i);            
}

Все отлично работает, но значение отображается в «1», а не «Выбрать день».Я пробовал разные варианты тегов выше, но ничего не работает.Что мне не хватает?

РЕДАКТИРОВАТЬ: у меня также есть аналогичный виджет, отображающий годы, который инициализируется таким же образом, но с циклом, начинающимся с 2012 года. Вот так:

years = new LinkedList<Integer>();
for(int i=2012; i<=2020; i++) {
    years.add(i);           
}

Это работает нормально, показываяВыберите год ", как и ожидалось.Так проблема в том, что инстанцирующий цикл начинается с 1?И если да, то какой обходной путь?

1 Ответ

1 голос
/ 23 января 2012

Ваш код выглядит хорошо до сих пор. «Проблема», как вы описали, возникнет, если вы предварительно инициализировали <h:selectOneMenu value> точно значением элемента. В вашем случае, скорее всего, вы установили значение day на 1 где-то в вашем реальном коде. Например,

private int day = 1; // Instead of default 0.

или

public Bean() {
    setDay(1);
}

Etcetera.


Обновление : согласно вашему комментарию:

У меня так было, потому что я использую страницу как для редактирования, так и для входа в новый аукцион, и я хотел убедиться, что при возвращении на страницу для входа в новый аукцион, после того, как другой аукцион был отредактирован, мы удалить отредактированные значения аукциона. Но кроме того, я выясню, что с этим делать.

Поместите компонент в область просмотра вместо области сеанса. Область сеанса является неправильной областью для форм ввода. Его следует использовать только для данных, указанных в сеансе, таких как зарегистрированный пользователь, его настройки и т. Д. См. Также Связь в JSF2 - Области управляемых компонентов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...