gpt4 book ai didi

java - Spring表单命令的意图

转载 作者:搜寻专家 更新时间:2023-11-01 02:34:54 24 4
gpt4 key购买 nike

Spring 的表单 Controller (例如SimpleFormControllerBaseCommandController)使用命令在HTML 表单和 Controller 之间传递数据。我的问题是,使用支持模型作为命令本身是常见的做法吗?或者创建一个单独的命令是否很常见,该命令具有与支持模型中的属性相对应的属性。

我的问题是,要使用支持模型作为命令,属性编辑器对于非字符串属性的转换是必需的。想象一个具有许多非字符串强类型自定义字段类型的数据模型。在提交表单时,属性编辑器会在调用 validator 之前进行转换。如果无法进行类型转换(用户输入错误),则 validator 永远没有机会提供详细的错误消息。 HTML 表单上显示的只是一般错误消息。看我的related Stackoverflow question .

另一种方法是创建一个单独的命令来复制支持模型中的每个字段,但作为一个字符串。通过这种方式, validator 可以验证每个字段的字符串表示。然后 Controller 的 onSubmit 负责将基于文本的命令转换为支持模型。从我对 Spring 的研究来看,这似乎是预期用途。我犹豫要走这条路是因为需要为每个数据模型创建一个单独的命令的繁琐方式。然后是必须在命令和数据模型之间编码的额外工作。让表单直接编辑支持模型并使用属性编辑器进行转换要方便得多。接下来的问题是验证。

所以我很好奇其他人如何处理包含自定义类型的非字符串字段的基于表单的模型编辑问题。

最佳答案

我建议您查看 Spring binding and validation API .将表单元素绑定(bind)到服务层需要的对象中,并让 Controller 传递它们。

我的偏好是直接绑定(bind)到业务对象,而不是仅仅为了 Web 层而创建 DTO。我不喜欢平行的层次结构。

关于java - Spring表单命令的意图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/735924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com