我是 Spring 的新手,之前我曾在 PHP 和 Python 中工作过。我在理解 Spring 表单的工作方式和验证方式时遇到了一些问题。到目前为止,我的理解是,当您使用表单时,您的表单由 bean 支持,这意味着您必须向 JSP 提供一个 bean。您也可以使用标准 HTML 表单,但您必须手动检索控制器中的请求参数。
这是我遇到的问题。我有一个使用 Hibernate Validator 的用户 bean,并且我为用户添加、编辑页面。问题是我不希望密码字段出现在编辑页面上,密码无论如何都会是垃圾,因为它使用 BCrypt。但是,当提交表单时,验证失败,因为它希望密码存在。似乎无论如何都没有使用 Spring Form 进行部分 bean 实现。
如果可能的话,我想使用 Spring Form,因为它减少了重复的验证代码,而且它总是很好地处理对象。我现在的想法是创建一个中间对象,然后将数据从该对象转换到我的 bean。看起来很乏味,并且可能导致创建许多对象的方式。我的另一个想法是只使用普通的旧 HTML 表单并自己拉参数并在对象中设置值。
我不确定什么是最好的方法,或者我是否在正确的轨道上思考。Spring Forms 和验证提供似乎很棒,但似乎不是特别灵活。就像我说的我是 Spring 新手,所以我可能只是遗漏了一些东西或不理解。
我一直在努力解决的另一个问题是表单上需要多个对象。假设我有一个用户 bean,它具有以下属性。
私人角色角色;私人国家;
所以我需要将 User、List 和 List 传递给我的 JSP。我可以让它们正常显示,但是如果表单验证在返回该页面时失败,我将失去我的角色和国家对象,除非我在返回视图名称之前将它们重新添加到模型中。我在这里遗漏了什么还是那是常态。这是一个请求对象,所以我想这是有道理的,但每次都必须重新添加它们似乎很乏味。