java - Spring MVC 和 "big forms"

标签 java forms spring google-app-engine spring-mvc

这是一个非常简单的问题。

我想知道向 Spring MVC @Controller 提交巨大 html 表单的最佳实践是什么(巨大 = 超过 20 个字段/复杂字段作为列表等等......)

我有点困惑,因为有人使用这种方法(来自官方示例):

@RequestMapping( value = "/users" , method = RequestMethod.POST )
    public ModelAndView saveUser(Locale locale, @Valid User user, BindingResult result) {

        if (result.hasErrors()) {

            logger.error("Errori form:: " + result.getErrorCount());

        } else {

            logger.info("Utente salvato");
            userService.saveUser(user);

        }
        ...
        return mav;
    }

还有一些人这样使用更复杂的 SimpleFormController: Spring-MVC forms on GAE

我当然更喜欢第一种方式,但我担心我将不得不创建许多“FormBeans”,无用的 DTO。

你能解释一下差异并给我建议吗?

谢谢。

最佳答案

您的这个示例的目的是使用 Spring 验证。我认为你应该看看 spring 手册或一些帮助,因为它非常基础,但总体思路是 Spring 为你验证表单。

首先,您必须创建一个 Pojo(使用表单中的所有输入以及 getter 和 setter 创建一个类)。

然后,你必须使用 Spring 形式,它与普通形式略有不同。基本思想是将一个对象(在您的例子中为用户)映射到表单。然后,每个输入都映射到 Pojo 的一个字段。

之后,您可以使用注释将验证添加到 Pojo。

@Size(max = 10)
private String name;

例如,此注释 Size 表示字段名称最多必须为 10 个字符。 此验证通过注释 @Valid 进行检查。

然后,当调用 hasErrors 时,您可以获取表单是否有错误。

关于java - Spring MVC 和 "big forms",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8137519/

相关文章:

java - 如何通过管道将输入输入到 java 程序中,但该输入仍然显示在输出中?

php - Symfony 3.0.1 CSRF token 存在但无效

java - Spring Boot 设置 MongoDB 存储库

java - Spark 重启时使 session 无效

java - 找到差异并将其存储在新数组中?

java - 替换Java字符串中特定长度的子字符串

java - 将数据绑定(bind)到RequestBody(415错误)

javascript - 如何在选项标签中使用多种颜色为文本着色

php - 如何以红色显示表单 errorSummary() ?

java - 无法导入 ClassPathXmlApplicationContext