2013-03-12 3 views
0

Я пытаюсь получить имя primefaces SelectOneMenu выбранного элемента из кода:Получить выбранный элемент SelectOneMenu «s из кода

Это мой SelectOneMenu:

FacesContext.getCurrentInstance().getViewRoot().findComponent("formMain:somSelect"); 

найден Компонент. Я уже пытался использовать его в SelectOneMenu, но я не получу метод, подобный «getSelectedValue()», который написан в руководстве пользователя в «клиентской стороне api». Я также попытался:

FacesContext.getCurrentInstance().getViewRoot().findComponent("formMain:somSelect").getAttributes().get("label"); 

Но это возвращает NPE.

<p:selectOneMenu id="somSelect" value="#{userManagerBean.somValue}" valueChangeListener="#{userManagerBean.somListener}" styleClass="selecters"> 
<f:selectItems value="#{userSelectBean.userList}" /> 
</p:selectOneMenu> 

UserManagerBean.java

@ManagedBean 
@RequestScoped 
public class UserManagerBean { 

    private String somValue; 
    private String selectedUser; 
    private List<User> userData;  
    private List<User> users; 

    public UserManagerBean() { 

    } 

    public String getSomValue(){ 
     return somValue;   
    } 

    public void setSomValue(String somValue){ 
     this.somValue = somValue; 
    } 

    // Getter for Table Content 
    public List<User> getUserData() { 
     return userData; 
    } 

Любые идеи?

€: Проблема в том, что выбранный элемент возвращается только в поглотителе, если я вызываю метод и АЯКС обновление:

<p:ajax update="panelMain" listener="#{userManagerBean.changeEvent}" /> 

Но я не получаю правильный выбранный элемент на странице load (item = null).

+1

Почему вы это усложняете? Вероятно, вы привязали значение компонента к свойствам бэк-компонента? – partlov

+0

Я также пробовал это, но я не получил имя выбранного элемента в качестве значения, а также мое значениеChangeListener не работает: не вызывается, если я изменяю выбранный элемент. Точнее: геттер возвращает null для ** somValue ** – ctekk

+1

Можете ли вы показать соответствующие части вашего бэкбона? Определение класса, аннотации и getter и setter для этого свойства 'somValue'. – partlov

ответ

1

Поскольку вы используете список фасонов для заполнения f:selectItems, вы должны добавить конвертер или указать атрибут itemValue. В вашем случае в качестве значения является String обеспечивает itemValue с некоторым String идентификатора вашего User боба:

<f:selectItems value="#{userSelectBean.userList}" var="u" itemValue="#{u.code}" itemLabel="#{u.name}"/> 

Изменения свойств code и name тем, которые у вас есть в вашем User боба. Будь берегом, что itemValue указывает на String, так как ваша ценность в бэк-бэне String.

+0

Спасибо. Кажется, я знаю, в чем проблема. Геттер всегда возвращает значение null для ** somValue ** при загрузке страницы. Только когда я снова вызываю компонент (от кнопки, например), возвращается правильное значение. Любая идея об обходном пути была бы высоко оценена! – ctekk

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