java - 如何在 Spring Controller 方法中从许多 @RequestParam 参数切换到 @ModelAttribute

标签 java spring jsp controller spring-annotations

我是 spring 的新手,我已经设法从 JSP View 中的表单收集数据并将我的表单提交给 Controller 。根据从 View 获取的数据,我正在实例化一个模型对象,它还包含其他模型对象:

@RequestMapping(value = "/updateEntry", method = RequestMethod.GET)
public RedirectView updateAction(ModelAndView model,
@RequestParam(value = "name", defaultValue = "none") String selectedWaveName,
@RequestParam(value = "id", defaultValue = "-1") int id,
@RequestParam(value = "function", defaultValue = "none") String function,
@RequestParam(value = "evidence", defaultValue = "none") String evidence,
@RequestParam(value = "action", defaultValue = "none") String action,
@RequestParam(value = "topicId", defaultValue = "-1") int topicId,
@RequestParam(value = "topic", defaultValue = "none") String topic,
@RequestParam(value = "topicDesc", defaultValue = "none") String topicDesc,
@RequestParam(value = "waveId", defaultValue = "-1") int waveId,
@RequestParam(value = "waveStart", defaultValue = "none") String waveStart,
@RequestParam(value = "waveEnd", defaultValue = "none") String waveEnd)
throws ParseException {

DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
Date dateStart = formatter.parse(waveStart);;
Date dateEnd = formatter.parse(waveEnd);

waveDAO.updateFormResults(new FormResults(id, 
new Topic(topicId, topic, topicDesc), 
new Wave(waveId, selectedWaveName, dateStart, dateEnd), 
evidence, action, function));
return new RedirectView("/hr/?name=" + selectedWaveName);
}

如何使用 @ModelAttribute 将整个 @RequestParam 行替换为更少的行? 我是否还需要将 @ModelAttribute 注释添加到模型类(FormResults、Topic、Wave)?

谢谢。

最佳答案

@ModelAttribute 这里并不是真正需要的。我通常做的(但可能不适合你的情况)是一个包含所有这些数据的对象:

@RequestMapping(value = "/updateEntry", method = RequestMethod.GET)
public RedirectView updateAction(ModelAndView model, Options options) throws ParseException {
    ...
}

public static class Options {
    private String selectedWaveName,
    private int id,
    ...
    // Getters and setters
}

关于java - 如何在 Spring Controller 方法中从许多 @RequestParam 参数切换到 @ModelAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12194705/

相关文章:

java - Servlet 映射问题 - 我做错了什么?

java - JSP 为俄语文本提供带问号的页面

java - 为什么 event.getActionMasked 会切换到这些情况,而 event.getAction 不会

java - 找不到类 Jaws Wordnet java

关于测试用例失败的 Java 实践作业混淆

java - 如何使用HEAD检查文件是否存在

java - 重写 Spring 定义 : Spring Bean Annotation @Primary

java - 隐藏开源应用程序中使用的 API key

spring - 如何在没有 Spring Boot 的情况下使用 Spring WebClient

java - 尝试在 jSTL 中获取并解析 session 变量(xml 字符串)