【问题标题】:Spring binding - dealing with numeric inputs?弹簧绑定 - 处理数字输入?
【发布时间】:2014-02-21 07:40:55
【问题描述】:

我正在处理一个 Webflow 应用程序,我可能必须提交当前表单才能删除子记录(复杂的工作流程,抱歉)。

问题是,如果用户在表单中输入垃圾数据,然后按下“删除”按钮,绑定和/或验证将失败,并且永远不会提交表单。

因此,如果他们输入垃圾数据,他们无法删除记录。

处理用户在网络表单中输入“垃圾”数据的首选方法是什么,尤其是在数字字段中输入非数字数据?我有一个如下所示的 Spring 表单支持对象:

public class MyFormInfo implements Serializable {
    private String myName;
    private Integer myNumber;
}

如果用户在myName 字段中输入垃圾,我可以在验证期间忽略它。但是,如果他们在myNumber 字段中输入垃圾并且绑定失败,我没有很好的方法来捕获它并且我无法提交表单。

大家有什么好的办法吗?

【问题讨论】:

    标签: forms spring spring-mvc


    【解决方案1】:

    也可以看看这个answer,但总而言之,在转换时类型不匹配的情况下,没有好的方法可以添加错误消息。

    可用的机制(属性编辑器、转换器、bean 验证)并不意味着处理类型不匹配。

    最好的解决方案可能是通过 Javascript 通过一些只接受数字的字段掩码在客户端进行验证。然后在服务器上,类型不匹配只会在出现错误的情况下发生,因此未处理的错误是可以接受的。

    为了在服务器上执行此操作,可以将 String 属性添加到 DTO,并应用 bean 验证:

     @Pattern(regexp = "{A-Za-z0-9}*")
     String numericField;  
    

    然后可以通过 bean 验证向页面添加错误消息,请参阅此example

    【讨论】:

    • 谢谢,这正是我所害怕的。只是想要一些确认。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多