我正在使用Tiles 3,JPA和所有其他很酷的东西学习Spring MVC。我创建了一个表单来发送数据,下面是表单:
<form:form method="POST" action="/users/save" enctype="multipart/form-data" modelAttribute="formUsuario">
<form:label path="username" for="username">Username</form:label>
<form:input type="text" id="username" path="username" class="span4" value="${user.username}" />
<form:label path="firstName" for="firstName">First name</form:label>
<form:input type="text" id="firstName" path="firstName" class="span4" value="${user.firstName}" />
</form:form>
控制器内部添加新记录的方法:
@Secured("ROLE_USER")
@RequestMapping(value = "/new", method = RequestMethod.GET)
public String getNew(@ModelAttribute("formUsuario") br.com.rodrigoferra.domain.User user) {
logger.info("Add new user");
return "users/edit";
}
保存新记录的方法:
@Secured("ROLE_USER")
@RequestMapping(value = "/save", method = RequestMethod.POST)
public @ResponseBody String doSave(@ModelAttribute("formUsuario") br.com.rodrigoferra.domain.User user, BindingResult results, Model model) {
if(results.hasErrors()) {
return "users/edit";
}
user = userRepository.save(user);
logger.info("Username: " + user.getUsername());
return "redirect:/users/";
}
它正在保存记录,但它将所有内容保存为Null!来自表格的数据正由控制器接收。我搜索了很多,并找到了相同的例子,但我不能让我的工作!
我错过了任何配置吗?
谢谢,抱歉我的英语不好。
编辑:
用户bean:
@Entity(name="users")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue( strategy = GenerationType.IDENTITY)
private Long id;
private String firstName;
private String lastName;
@Column(unique=true)
private String username;
private String password;
@Transient
private String passwordConfirmation;
private Date birthdate;
private String signature;
private String email;
private String sex;
private int active;
答案 0 :(得分:3)
使用Firebug或类似工具查看表单字段值是否正确包含在请求中,并将请求发送到正确的URI。
在user
中收到请求后立即记录(或调试)并检查doSave()
对象内容。
记录(或调试)并检查user
中的userRepository.save()
对象内容,以确保在保留之前所有值都可用。
以下可能是实际原因,但首先检查上述情况会消除其他可能性
删除表单定义中的enctype="multipart/form-data"
,因为此表单不打算发送二进制数据
检查以下内容以获取更多信息:
What does enctype='multipart/form-data' mean?
Form content types in HTML 4 spec
Multipart form data encoding in HTML 5 spec