【问题标题】:Spring MVC and "big forms"Spring MVC 和“大表单”
【发布时间】:2011-11-15 14:03:25
【问题描述】:

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

我想知道将 huge html 表单提交到 Spring MVC @Controller 的最佳实践是什么(巨大 = 超过 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。

你能解释我的不同之处并给我建议吗?

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    首先,您必须创建一个 Pojo(使用来自表单的所有输入创建一个类,包括 getter 和 setter)。

    然后,您必须使用与普通形式略有不同的弹簧形式。基本思想是将对象(在您的情况下为用户)映射到表单。然后,将每个输入映射到 Pojo 的一个字段。

    之后,您将验证添加到 Pojo,并带有注释。

    @Size(max = 10)
    private String name;
    

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

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

    【讨论】:

    • 好的,感谢您的帮助,但是....这不是一个完整的答案。你能解释一下与其他解决方案有什么区别吗?为什么我应该使用 SimpleFormController?
    • 老实说,我从来没有使用过 SimpleFormController,所以我不能告诉你。我还尝试在 Spring Source 上对其进行实例化,并将其标记为已弃用。如果您查看您发布的链接,它基本上是相同的,不同之处在于控制器上的映射。 SimpleFormController 上的 onSubmit 没有 RequestMapping (我认为它是自动完成的?),而您发布的这个控制器有。它也很相似,因为您在 SimpleFormController ir 将命令转换为另一个对象(用户)中所做的事情,这里是直接采用的。我建议仔细查看这两个示例。
    猜你喜欢
    • 2015-10-16
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2013-03-05
    • 2017-06-22
    相关资源
    最近更新 更多