如何在Spring中更新时在<input />文本字段中显示属性值?

时间:2015-10-15 16:50:09

标签: java spring hibernate jsp

我正在处理用户详细信息表单。我在用户表单中注册,它存储在数据库中。

现在我想在同一个表单中更新用户详细信息。当我从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";

   }
}

2 个答案:

答案 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绑定与表单属性一起使用。