struts2 填充默认文本字段和下拉列表并绑定到模型
struts2 populating default textfield and dropdown and binding to model
我想在页面加载时填充我的文本字段值和下拉列表值。当用户点击提交时,文本字段和下拉值应该绑定到模型(Person class)。
我该怎么做?
public class Person {
private String name;
private String food;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setFood(String food) {
this.food = food;
}
public String getFood() {
return food;
}
}
public class PersonAction extends ActionSupport implements ModelDriven {
private Map<String,String> foodList = new HashMap()<String,String>;
private String name = "What is your name?"
private Person person;
public String execute() {
foodList.put("IC","Ice Cream");
foodList.put("CA","Cake");
return SUCCESS;
}
public Object getModel() {
return person;
}
}
<s:form action="addPerson" >
<s:textfield name="name">
<s:select list="foodList" name="" />
<s:submit type="button" name="submit" />
</s:form>
您应该在标签 s:select 和 s:textfield
中使用名称属性
<s:textfield name="name">
<s:select list="foodList" name="food" />
这样,该字段将在操作中与 getModel().name 和 getModel().food 绑定。
要显示 "What is your name" 文本,您有两个选择:
在动作class中,将人名设置为"What is your name"。
public String execute() {
person = new Person();
person.setName("What is your name?");
foodList.put("IC","Ice Cream");
foodList.put("CA","Cake");
return SUCCESS;
}
或者您可以使用占位符标签属性来默认显示 "what's your name" 文本。
<s:textfield name="name" placeholder="What is your name?">
我编辑了答案以使用 modelDriven 实现的操作。
我想在页面加载时填充我的文本字段值和下拉列表值。当用户点击提交时,文本字段和下拉值应该绑定到模型(Person class)。
我该怎么做?
public class Person {
private String name;
private String food;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setFood(String food) {
this.food = food;
}
public String getFood() {
return food;
}
}
public class PersonAction extends ActionSupport implements ModelDriven {
private Map<String,String> foodList = new HashMap()<String,String>;
private String name = "What is your name?"
private Person person;
public String execute() {
foodList.put("IC","Ice Cream");
foodList.put("CA","Cake");
return SUCCESS;
}
public Object getModel() {
return person;
}
}
<s:form action="addPerson" >
<s:textfield name="name">
<s:select list="foodList" name="" />
<s:submit type="button" name="submit" />
</s:form>
您应该在标签 s:select 和 s:textfield
中使用名称属性<s:textfield name="name">
<s:select list="foodList" name="food" />
这样,该字段将在操作中与 getModel().name 和 getModel().food 绑定。
要显示 "What is your name" 文本,您有两个选择:
在动作class中,将人名设置为"What is your name"。
public String execute() {
person = new Person();
person.setName("What is your name?");
foodList.put("IC","Ice Cream");
foodList.put("CA","Cake");
return SUCCESS;
}
或者您可以使用占位符标签属性来默认显示 "what's your name" 文本。
<s:textfield name="name" placeholder="What is your name?">
我编辑了答案以使用 modelDriven 实现的操作。