防止自动绑定覆盖某些字段Spring MVC

时间:2014-12-01 14:34:58

标签: spring spring-mvc

Spring的自动绑定功能非常棒。所以,我正在尝试处理这种情况:

  • 用户正在“分享”来自其他人的内容,假设他正在与其他人共享“论坛邮件”到他的新闻源。
  • 我自动提取共享表单,该表单通过id引用共享的ForumPost。

    输入类型=“隐藏”name =“post”value =“15”

因此,Spring将post对象自动绑定到结果对象。我有一个dataBinder函数,它根据提供的id加载帖子。

如何确保此处绑定的唯一内容是id。阻止用户说出

的最佳方法是什么
 input type="hidden" name="post" value="15"
 input type="hidden" name="post.txt" value="deface me"

在dataBinder中。我可以特意说

 dataBinder.setAllowedFields("....all the allowed fields...","post")

这有点不方便,因为很容易忘记随着时间的推移无意中破坏应用程序的属性。

我认为不可能说

 dataBinder.setDisallowedFields("post.*")

只是想知道处理这个问题最有效的方法是什么。

1 个答案:

答案 0 :(得分:0)

最安全的方法是创建一个自定义的表单备份对象(仅包含表单所需字段的POJO),并将其用于绑定。

您可以使用Dozer之类的工具自动将表格支持对象中的值复制到域对象。