【发布时间】:2013-09-30 03:13:37
【问题描述】:
我想将下拉列表的选定值保存到数据库中。
首先加载index.jsp。从index.jsp,点击index.jsp的注册URL的话可以到register.jsp。
struts.xml:
<action name="registerAction" class="action.RegisterAction" method="populateSelect">
<result name="success" >register.jsp</result>
</action>
<action name="register" class="action.RegisterAction" method="execute">
<result name="success" >login.jsp</result>
</action>
index.jsp:
<s:url id="url" action="registerAction">
</s:url>
<s:a href="%{url}">Register</s:a>
register.jsp:
<s:form action="registerAction" method="execute">
<s:select label="Select Date of Month" key="Month List" name="months" headerKey="0" headerValue="--Select--" list="allMonths" listKey="id" listValue="name"/>
<s:submit value="Register"/>
</s:form>
动作类是:
public class RegisterAction extends ActionSupport {
String name, pwd, email, address, months;
int phno;
List<Month> allMonths = new ArrayList<Month>();
List<User> users = new ArrayList<User>();
UserDao udao = new UserDao();
public List<Month> getAllMonths() {
return allMonths;
}
public void setAllMonths(List<Month> allMonths) {
this.allMonths = allMonths;
}
public String getMonths() {
return months;
}
public void setMonths(String months) {
this.months = months;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPhno() {
return phno;
}
public void setPhno(int phno) {
this.phno = phno;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public RegisterAction() {
}
public String execute() throws Exception {
User u = new User();
u.setName(name);
u.setEmail(email);
u.setAddress(address);
u.setPhno(phno);
u.setPwd(pwd);
System.out.println("Hi der "+months);
u.setMonths(months);
udao.addUser(u);
return "success";
}
public String listAllUsers() {
users = udao.getUsers();
System.out.println("In Action, " + users);
return "success";
}
public String populateSelect() {
allMonths = udao.getMonths();
System.out.println("In constructor " + allMonths);
return "success";
}
}
下拉列表实际上只是表单字段之一。表单中还有其他字段。
除月份字段外的所有值都可以输入数据库。对于月份字段,输入的值为null。
我认为下拉的值没有被取走。
【问题讨论】:
-
日志中有什么?
User.months的映射是什么?它是否在您的println中正确打印值?是否有任何验证? -
没有验证。 nthng 正在控制台中打印。我已经按照上面的说明更改了代码。上面的代码值正在被输入到数据库中,但是月份的值是空的。
-
动作中有
months的公共设置器吗?您是否验证了请求中发送了months值,例如,在您的 JS/网络控制台中? -
"Hi der" 与 System.out.println 一起在控制台中打印..但不显示月份的值。
-
您需要在 github 或类似网站上提供 [SSCCE](sscce.org) 才能查看。请同时验证请求中发送的内容。
标签: java hibernate jsp validation struts2