為什麼JSF表單中含有ValueChangeListener時,每次提交表單,都會觸發ValueChangeEvent呢

Hotpepper發表於2007-06-22
我的JSP頁面:

<h:form>
	<h:selectOneMenu id="tag" valueChangeListener="#{myForm.change}">
		<f:selectItem itemValue="1" itemLabel="1"/>
		<f:selectItem itemValue="2" itemLabel="2"/>
	</h:selectOneMenu>
	<h:dataTable var="row" value="#{myForm.data}">
		<h:column>
			<h:outputText value="#{row.value}"/>
		</h:column>
	</h:dataTable>
	<h:commndButton id="next" actionListener="#{myForm.next}"/>
</h:form>
<p class="indent">


我的JAVA程式碼:

public class MyForm {
	private List<IntBean> data = new ArrayList<IntBean>();
	
	public MyForm() {
		for(int i = 0; i < 100; i++) {
			data.add(new IntBean(i));
		}
	}
	
	public void change(ValueChangeEvent event) {
		System.out.println("change");
	}
	
	public void next(ActionEvent event) {
		System.out.println("next");
	}
}

public class IntBean {
	private int value;
	
	public IntBean(int val) {
		value = val;
	}
	
	public int getValue() {
		return value;
	}
}
<p class="indent">


每次點選next按鈕,後臺都會列印【change】,不管下拉選單中的值是否有變化。
為什麼會這樣呢?請各位大蝦指點下。
我想實現成點選next按鈕時,不觸發change方法,不知應該如何實現,請指點下。
最開始的時候,我在下拉選單裡是有【onchange="this.form.submit()"】的,想實現的就是透過改變下拉選單的值的時候更新下面table中的值,但這樣每次點選next按鈕時,卻同時觸發了change方法,這個不是我想要的。

相關文章