h: selectManyListBox valueChangeListener не вызывает - PullRequest
0 голосов
/ 07 марта 2012

Я использую Netbeans 6.9.1. Я использую код, в котором я просто использую selectManyListBox, и я хочу, чтобы, когда пользователь выбирает все значения, тогда мой valueChangeListener вызывается. Вот что я делаю

<h:selectManyListbox id="countryListBox" size="5" value="#{news.saarcCountries}"
                     onselect="form.submit();" valueChangeListener="#{news.changeAppearOnCountryPage}">
    <f:selectItems value="#{news.saarcCountriesMap}"/>
    <f:ajax render="countryPageExpiryCalender" />

</h:selectManyListbox>

<p:calendar id="countryPageExpiryCalender" value="#{news.countryPageExpiryDate}"
            navigator="true" style="z-index: 1;" locale="en" mode="popup"
            pattern="dd/MM/yyyy" showOn="button" readOnlyInputText="true"
            disabled="#{!news.appearOnCountryPage}" />

Я тоже попробовал это, вместо onselect я использовал onchnage как

onchange="submit()"

Вот мое значение ChangeListener

@ManagedBean(name = "news")
@ViewScoped
public class News {

    private Map<String, String> saarcCountriesMap = new LinkedHashMap<String, String>();
    private Set<String> saarcCountries = new TreeSet<String>();
    ...

    public void changeAppearOnCountryPage(ValueChangeEvent vcEvent){
        Iterator iter = saarcCountries.iterator();
        while(iter.hasNext()) {

            String name = (String)iter.next();
            System.out.println(name);
        }
    } //end of changeAppearOnCountryPage


} //end of class News

Я хочу, чтобы, когда пользователь выбирал все значения из selectmanyListBox, тогда мой valueChangeListener был call, и я проверял, есть ли у меня значения в переменной saarcCountries , тогда я устанавливаю появлятьсяOncountryPage = true , так что мой календарь это рендер. Но мой valueChangeListener не вызывает. Что я делаю не так?

Если я выбираю onselect, то я хочу спросить одну вещь, это событие будет вызываться всякий раз, когда я выбираю значение, или после того, как я выбрал все значения. Я хочу, чтобы, когда пользователь выбирал все значения, тогда мой ValueChangeListener вызывался, и значения, которые выбрал пользователь, будут в моей переменной saarcCountries. Так что я могу проверить значения, выбранные пользователем.

Я думаю, onchange () не подходит в моем случае. Пожалуйста помоги. Я застрял из-за этого: (

Спасибо

1 Ответ

2 голосов
/ 07 марта 2012

попробуйте так:

<h:selectManyListbox id="countryListBox" size="5" value="#{news.saarcCountries}">
    <f:selectItems value="#{news.saarcCountriesMap}"/>
    <f:ajax event="change" listener="#{news.changeAppearOnCountryPage}" render="countryPageExpiryCalender"/>
</h:selectManyListbox>

Вам не нужна форма.submit (); так как вы можете использовать AJAX ...

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