如何处理Spring MVC中的请求,响应和实体的DTO

时间:2014-01-28 20:29:47

标签: spring spring-mvc jpa

我对如何以最佳方式设计复杂的Spring MVC应用程序有点不确定。 该问题与用户管理系统有关。我的UserVO实现了Spring的UserDetails接口。

但是对于请求和响应,只需要特殊部分的信息。 在请求中,应该允许它发送密码以进行更改。但是“启用”,“过期”,“锁定”等标志显然不会被用户改变。 另一方面,该信息应显示给用户,因此必须包含在响应中。密码永远不会发送给客户端。

我开始在setter-和getter上使用JsonIgnore和JsonAttribute Annotations。但由于标志是布尔值,因此每次更新时它们都会以默认值'false'保留。

可能的解决方案:为响应和请求编写DTO,并使用Spring的ObjectMapper来持久化它们。这是正确的方法吗?如果我能够与我的VO合作并设置一些神奇的注释,如果你知道我的意思,我会感觉更舒服;)

1 个答案:

答案 0 :(得分:0)

您可能需要一个表单支持bean。你会在互联网上找到大量的例子。

编辑:

用户示例。您的表单包含用户名,更改密码的字段和重新确认密码的字段。 用户名是用户POJO,其中包含与您的用户相关的所有数据。

要从表单中捕获密码和密码确认(以及从用户POJO公开的所有其他数据,您需要一个表单支持bean)。

public class UserBacking {

  private String newPsw;

  private String confirmPsw;

  private User user;
}

以您的形式

<form:form action="${postUrl}" commandName="userBacking " method="POST">
   <!-- Fields goes here -->
</form>

在Controller中,您的方法将以ModelAttribute的形式接收UserBacking对象。