首页 文章

JSP在没有JS的情况下在Spring中进行客户端验证

提问于
浏览
0

我正在尝试使用JSP文件Spring,Tomcat,MS Access将表单详细信息输入到数据库中 . 我不应该使用Maven和JavaScript .

当我在使用JSP和servlet之前这样做时,使用正则表达式模式的HTML5的模式功能在我的客户端验证中工作正常 . 至于例如,对于登录ID,

<input type="text" name="uid"
            pattern="/^[A-Za-z0-9]+(?:[_][A-Za-z0-9]+)*$/" required>

工作得很好 . 现在我正在学习spring并试图使用表单标签,我正在做

<form:input type="text" path="uid" />

哪个工作正常,但我需要客户端模式验证器而不使用JavaScript .

现在每当我尝试添加模式功能时,就像

<form:input type="text" name="uid"
            pattern="/^[A-Za-z0-9]+(?:[_][A-Za-z0-9]+)*$/" required/>

它会报告错误:

type Exception report
    message /UserForm.jsp (line: 18, column: 61) equal symbol expected
    description The server encountered an internal error that prevented it from fulfilling this request.

我哪里错了?我知道在将数据保存到数据库之前我必须实现验证器接口,我最终会得到它 . 截至目前,对此的任何帮助都非常感谢 .

我是 Spring 天的新手,所以提供答案并附带相同的解决方法/解决方案代码的解释将是非常友好的帮助 . 谢谢提前 .

2 回答

  • 0

    对于JSP和Spring,您应该验证控制器类上的表单字段,并在表单上显示带有其他错误字段的错误:

    <form:input path="user" id="userInput" />
    <form:errors path="user" cssClass="error" />
    

    在控制器类中,您验证字段,如果没有错误,您可以将数据保存到数据库,否则您在表单上显示错误 .

    @PostMapping("/saveUser")
    public String saveUser(@ModelAttribute("user") @Validated User user, 
        BindingResult result, Model model) {
    
      //custom validation
      //validator.validate(user, result);
    
      if (result.hasErrors()) {
         //if any errors, return back to fill out the form again
         return "userForm";
      }
    
      //save to DB and return success page
      return "success";
    }
    

    验证可以是标准的和/或定制的 . 关于Spring验证,互联网上有很多很好的教程 .

  • 0

    也许你必须改变

    <form:input type="text" name="uid" pattern="/^[A-Za-z0-9]+(?:[_][A-Za-z0-9]+)*$/" required/>
    

    <form:input type="text" name="uid" pattern="/^[A-Za-z0-9]+(?:[_][A-Za-z0-9]+)*$/" required="required"/>
    

    required 更改为 required="required"

相关问题