我正在使用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()"
这是我的valueChangeListener
@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被调用,并且我检查我是否有 saarcCountries 变量中的值,然后我设置 appearOncountryPage = true ,所以我的日历是渲染。但是我的valueChangeListener没有调用。我做错了什么?
如果我选择onselect,那么我想问一件事,只要我选择了所有值后,此事件就会触发。我希望当用户选择所有值时,我的ValueChangeListener被调用,用户选择的值将在我的saarcCountries变量中。所以我可以检查用户选择的值。
我认为onchange()在我的情况下是不合适的。请帮忙。我因此而陷入困境:(
由于
答案 0 :(得分:2)
尝试这样:
<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>
您不需要form.submit();因为你可以使用ajax ...