我正在处理用户详细信息表单。我在用户表单中注册,它存储在数据库中。
现在我想在同一个表单中更新用户详细信息。当我从DB获取用户对象到Jsp时,数据不会显示在Textfields中。
我怎样才能实现这种行为 我的示例代码是:
<form:form commandName="user" action="saveuser">
<form:input path="userName" placeholder="name"/>
</form:form>
我的控制器代码是:
@Controller
public UserController{
@Reqmap........
public String getUserDetails(@ModelAttribute("user") User user,Map<Strig,Object> model) {
List<User> listUser = some service.getDetails();
//My 1st way
model.put("user",listUser);
//My 2nd Way
user = listUser.get(0);
//above two ways are not worked
return "userform";
}
}
答案 0 :(得分:2)
您没有为您的输入设置value
属性。尝试
<form:input path="userName" placeholder="name" value="${user.userName}"/>
如果您在模型中传递user
,它将起作用。
编辑:我添加了控制器部分
@RequestMapping(value="/your/url", method=RequestMethod.GET)
public String getEditForm(Model model)
{
User myUser = retrieveUserSomehow() //this obj must be a user. If you load a list, you should get the proper user entry. Of course, check that it's not null as well, but this is trivial, right?
model.addAttribute("user", myUser);
return "yourViewName";
}
这里是jsp
<form:form commandName="user" action="/your/url">
<form:input path="userName" placeholder="name" value="${user.userName}"/>
</form:form>
如果User
类具有userName
属性,这将有效。
答案 1 :(得分:0)
如果您希望User对象在表单加载时将值从DB填充到jsp,则需要在控制器中设置该值。例如确保User.name为某个值。然后将User.name绑定与表单属性一起使用。