2013-07-04 4 views
0

Мне нужна помощь. Я разрабатываю для jsf и web-приложения, и я столкнулся с проблемой, когда выбираю из выпадающего списка, чтобы получить выбранное значение, но я получаю пустую строку в действии.primefaces selectitem onclick event

Это мой XHTML код selectOneMenu теге

<p:selectOneMenu value="#{tanAllot.batchName}" id="batchName"> 
    <f:selectItem itemLabel="Select Batch" itemValue="" /> 
    <f:selectItems value="#{tanAllot.batchList}" /> 
    <p:ajax event="change" listener="#{tanAllot.test}" /> 
</p:selectOneMenu> 

это метод я использую в классе действий

private String batchName; 

public String getBatchName() { 
    return batchName; 
} 

public void setBatchName(String batchName) { 
    this.batchName = batchName; 
} 

public void test() { 
    System.out.println(batchName); 
} 

Моя проблема заключается при выборе значения из p:selectOneMenu теге метод по умолчанию должен вызывать в действии и извлекать значение, но я получаю пустую строку.

Может ли кто-нибудь помочь мне решить эту проблему?

ответ

0

Рассмотрите природу batchList. batchList должен быть List of Strings. Использование атрибута itemValue (в f: selectItem) может быть полезным.

Проверьте мой пример. В нем используется список провинций (экземпляры класса «Провинция»). Однако мне нужно только значение «id», которое является «Long»; если бы я хотел, чтобы вся выбранная провинция была «провинциальным объектом», мне понадобился бы «конвертер». (Пример отлично работает):

<p:selectOneMenu id="provinceField" 
     value="#{addAddressesMB.formAddress.provinceId}"> 
    <f:selectItem itemLabel="Select One" itemValue="" /> 
    <f:selectItems value="#{addAddressesMB.provinceList}" var="i" 
     itemLabel="#{i.description}" itemValue="#{i.id}" /> 
     <p:ajax update=":formId:cityField" 
      listener="#{addAddressesMB.provinceChangeHandler}" /> 
</p:selectOneMenu> 

И здесь приходит метод слушателя:

public void provinceChangeHandler() { 
    //do whatever you want with formAddress.provinceId 
    System.out.println(this.formAddress.provinceId); 
    //In my case I filter the cities according to the selected provinceId 
    // After that I update the cities dropdown(cityField) in the view. 
} 

Проверьте код и не стесняйтесь спрашивать. Удачи.