java - Spring MVC 将模型作为 dto 传递给表单?

标签 java spring design-patterns model-view-controller thymeleaf

我对将实体模型传递给 Controller ​​然后在 View 上形成表单有疑问,用户可以在其中填充必要的数据。

所以现在就是这样:

Controller

User user = new UserModel();
model.add("user", user);

查看

Form thing to populate values 

问题是: 出于安全目的,我不想传递实体本身,而是传递 DTO。 因为 DTO 在没有 setter 的情况下必须是不可变的,那么我将如何在 View 上设置这些必填字段? 我需要制作类似 POJO 的东西来传递数据?然后在填充数据后,用汇编器将POJO转换为实体并将其保存在我的数据库中? 或者还有其他方法可以做到这一点?

编辑。我在 View 端使用 Thymeleaf。

最佳答案

您需要创建一个 Form 对象,它是一个带有 setter 和 getter 的简单 pojo,用于捕获 Form 数据。要强制执行诸如 @NotNull 之类的验证规则,请查看 javax.validation.constraints。您应该有一个 @Service 组件,该组件必须是 @Controller 中的 @Autowired,才能将表单数据填充到一个或多个 @实体并调用@Repository组件(该组件必须是@Service中的@Autowired)来进行数据库操作。

关于java - Spring MVC 将模型作为 dto 传递给表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44443430/

相关文章:

java - JUnit/Mockito : throwing an exception in a new thread

java - 在 Spring Data Solr 中使用 POST 方法进行大查询

c++ - 将继承更改为组合

java - 将字符串从字符串数组转换为整数

java - 具有最终类系统和静态方法 currentTimeMillis 的 PowerMock

java - 将 ArrayList<> 转换为 TableView 的 ObservableList<>

Javascript 模式 : Conditional event handler

java - 运行 junit 时捕获异常

spring - 如何在 Spring MVC Controller 中映射动态 url/prj/noticeOpen/2

javascript - 可以共享作用域和访问实例的私有(private)原型(prototype)方法