我正在Spring MVC中构建简单的twitter克隆。我想为发布的消息提供编辑功能。
消息域对象看起来像这样(简化)
public class Message {
long id;
String text;
Date date;
User user;
}
我创建了jps表单
<form:form action="edit" method="post" modelAttribute="message">
<table>
<tr>
<td><label for="text">Message: </label></td>
<td><form:textarea path="text" id="text"/></td>
</tr>
<tr>
<td><input type="submit" name="commit" value="Save" /></td>
</tr>
</table>
</form:form>
并在控制器类中添加了这些方法
@RequestMapping(value = "/edit", method = RequestMethod.GET)
public String showEditMessage(@RequestParam long id, Model model) {
Message message = messageService.findMessage(id);
if (message == null) {
return "404";
}
model.addAttribute("message", message);
return "users/editMessage";
}
@RequestMapping(value = "/edit", method = RequestMethod.POST)
public String editMessage(@Valid @ModelAttribute Message message, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "/users/editMessage";
}
messageService.updateMessage(message);
return "/users/editMessage";
}
问题是editMessage()中收到的消息只包含文本字段。我认为这是预期的行为。是否可以配置为替换仅以jsp格式的字段?
我知道这只是一个字段而且我可以使用@RequestParam字符串消息,但迟早我会遇到类似的问题而不仅仅是一个字段。
我也有问题。 showEditMessage()中添加的属性是否传递给editMessage()方法?我尝试在第一个方法中添加“id”属性,但我无法在第二个方法中使用“@RequestParam long id”来检索它。
答案 0 :(得分:0)
@SessionAttributes("message")
在控制器类之上解决了它。