2016-12-26 4 views
0

Я новичок в JSF, и у меня возникли проблемы с h: selectOneMenu У меня есть combo1 с countrys и combo2 с городами, я хочу перезагрузить combo2, когда combo1 изменяет и всегда покидает combo2 с значение по умолчанию (--select--). Я использую событие ajax для перезагрузки значений, и это работает нормально, но я не могу оставить значение по умолчанию, которое я хочу, каждый раз, когда он изменяется.Выберите значение по умолчанию для h: selectOneMenu

<h:selectOneMenu id="country" value="#{bean.country}"> 
    <f:selectItem itemValue="" itemLabel="--Select--" /> 
    <f:selectItems value="#{bean.getCountrys()}" /> 
    <f:ajax event="change" listener="#{bean.getCitys}" render="city" execute="@this"></f:ajax> 
</h:selectOneMenu> 
<h:selectOneMenu id="city" value="#{bean.city}"> 
    <f:selectItem itemValue="" itemLabel="--Select--" /> 
    <f:selectItems value="#{bean.getCitys()}" /> 
</h:selectOneMenu> 

Edit: Спасибо за ответы, но оно не решает проблему. Позвольте мне дать вам полный пример, чтобы сделать его более понятным (мой английский плохой ...). Проблема заключается в том, что второй выбор имеет то же значение, что и первое, например. Combo 1 флаги: 1.Germany 2.Italy 3.Spain 4.France

Combo2 цвета. (выбран германский) 1. Черный 2. Красный. 3. Желтый

Я выбираю черный !, затем я выбираю в комбо 1 Италия, так как итальский флаг не имеет черного цвета, он возвращается к --Выбор-- Но если флаг Италии будет иметь черный цвет он перезагружает остальную часть значений, но оставляет черным выбранным, вместо того, чтобы возвращаться к - select ... Является ли это более ясным сейчас?

ответ

0

Вы почти там, просто добавьте атрибуты itemValue="#{null}" и noSelectionOption="true" к тегу <f:selectItem>.

<h:selectOneMenu id="city" value="#{bean.city}"> 
    <f:selectItem itemValue="#{null}" itemLabel="--Select--" noSelectionOption="true"/> 
    <f:selectItems value="#{bean.getCitys()}" /> 
</h:selectOneMenu> 

Первоначально поставлено here.

+0

Благодарим за отзыв, но это не решило проблему. Позвольте мне дать вам полный пример, чтобы сделать его более понятным (мой английский плохой ...). Проблема заключается в том, что второй выбор имеет то же значение, что и первое, например. – user3285427

+0

@SebastianMotavita: Если вы найдете дубликат, вы можете поставить вопрос как таковой, а не создавать почти идентичный ответ и разделять «обсуждение». Для большинства «базовых» проблем уже есть ответ, как вы выяснили. – Kukeltje

+0

@ user3285427: Ну, я разбавляю это, когда вы обновляете вторую комбо (которая имеет значение города для bean-компонента, может быть, String), это получает значение bean.city, которое сохраняется после предыдущего выбора, в данном случае «черный», возможно, метод getCitys не обновляется, как вы. –