返回非数字字符..在验证消息中显示它们

时间:2015-08-13 12:08:32

标签: java spring-mvc

我在jsp页面上使用验证。当字段中的条目不可接受时,我们当前会给出一般的错误消息,例如“请输入有效数字”,但我希望显示我输入的字符不是数字。例如:假设我输入“O”而不是“0”,我想显示消息“O”不能接受为数字

我怎样才能做到这一点。任何想法和指导都会很明显

2 个答案:

答案 0 :(得分:0)

好的,这很容易实现。我们都知道我们可以在一个属性中使用多个验证消息,对吗?例如:

    [Required(ErrorMessage = "link is wrong!")]
    [DisplayName("link (ex: http://test.com)")]
    [Url(ErrorMessage = "Please write a valid link!")]
    public string Linku { get; set; }

所以,现在你需要做的就是花一些时间并尽可能多地添加。您可以在前面的示例中添加额外的属性,并根据需要再添加一个案例,例如:

    [RegularExpression("([a-zA-Z0-9 .&'-]+)", ErrorMessage = "You cant add numbers on the link field")]
    [Required(ErrorMessage = "link is wrong!")]
    [DisplayName("link (ex: http://test.com)")]
    [Url(ErrorMessage = "Please write a valid link!")]
    public string Linku { get; set; }

正如我所看到的,你的主要目的是获取一些参数,然后更加动态地向他展示他写的内容,这是不对的。但是这样的属性,属性验证并不能为我们提供一些准备好的东西。如果我们想深入了解,我们必须在检查时在控制器中执行此操作:

 if(ModelState.IsValid)
  {
     //here we can edit validation error messages, since we can have 
     //parameters from the controller right?

  }

此外,您可以检查错误消息,也可以在此for循环中编辑它们。

        foreach (ModelState modelState in ViewData.ModelState.Values) {
             foreach (ModelError error in modelState.Errors) {
                     DoSomethingWith(error);
    }

还有一个选择是使用javascript / jquery,客户端验证,这在安全性和绕过时不是很有用。

答案 1 :(得分:0)

这里有一个简单的例子,说明如何获得不符合您需求的所有角色。您可能必须使其适应您的代码。这只是一个指导原则。

String test="456464O1324l456";
    ArrayList<Character> chars=new ArrayList<Character>();
    for (Character c: test.toCharArray()) {
        boolean error=Character.isAlphabetic(c);
        if(error){
            chars.add(c);
        }
    }
    for (Character character : chars) {
        System.out.println(character);
    }