我正在學習如何使用JSF使用事件。出於某種原因,當我更改下拉菜單的值時,程序不會更改文本字段中的值。該頁面加載並顯示「德國」,但不會將文本字段更改爲「DE」。有什麼建議麼?JSF ValueChangeListener不起作用
的index.xhtml:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<f:view>
<h:form>
<h:selectOneMenu value="#{Bean.selectedItem}" valueChangeListener="#{Bean.changeEvent}" onchange="submit()" >
<f:selectItems value="#{Bean.itemsList}" />
</h:selectOneMenu>
<br />
<h:inputText value="#{Bean.selectedItem}" />
</h:form>
</f:view>
</h:body>
MyBean.java
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import java.util.ArrayList;
import javax.faces.model.SelectItem;
import javax.faces.event.ValueChangeEvent;
@ManagedBean (name = "Bean")
@RequestScoped
public class MyBean {
private static ArrayList menuItems;
private String selectedItem = "EN";
static {
menuItems = new ArrayList();
menuItems.add(new SelectItem("EN", "English"));
menuItems.add(new SelectItem("DE", "Germany"));
}
public ArrayList getItemsList() {
return this.menuItems;
}
public void setSelectedItem(String item) {
this.selectedItem = item;
}
public String getSelectedItem() {
return selectedItem;
}
public void changeEvent(ValueChangeEvent e) {
selectedItem = e.getNewValue().toString();
}
}
該輸入字段*是否真的需要是輸入字段?它不應該只是只讀或輸出字段嗎? – BalusC
我只是這樣做,以瞭解它是如何工作的。我有另一個更大的程序,我使用它來在選擇時自動輸入默認值。這是爲了測試。我只需要弄清楚如何更改下拉菜單值更改時的文本字段。 – user1011376