关注在使用post处理模型之前修改模型的属性

时间:2014-01-08 12:09:42

标签: spring-mvc

在我的应用程序中,我有多个Spring控制器,它使用相同的域对象ComplexObject处理发布请求:

@Controller
public class MyController {
    @RequestMapping(method = RequestMethod.POST)
    public String processComplexForm (
        @NotNull @Valid @ModelAttribute("complexObject") ComplexObject compexObject,
        BindingResult result, HttpServletRequest request, HttpSession session) {
        //implementation
    }

}

public class ComplexObject {
          private String myProperty;
}

现在我想让用户自由地在表单中的一个属性中写入空格。所以我需要从属性中删除所有空格,以统一输入。我想只在一个地方制作它,而不是在所有使用ComplexObject的控制器中制作它。

我的解决方案是删除属性的setter方法中的所有空格,如下所示:

public setMyProperty (String myProperty) {
    this.myProperty = myProperty.replace(" ", "");
}

您是否看到此解决方案存在任何问题,您是否为此问题提供了更优雅,更安全的解决方案。

1 个答案:

答案 0 :(得分:0)

对我来说听起来很合理,尽管您可能希望使用StringUtils.replaceChars()这是空的安全 - 以防myProperty为空。

public setMyProperty (String myProperty) {
    this.myProperty = StringUtils.replaceChars(myProperty, ' ', '');
}