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

时间:2018-04-20 04:45:28

标签: java spring forms jsp spring-mvc

我正在尝试使用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.

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

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

2 个答案:

答案 0 :(得分: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验证的好教程。

答案 1 :(得分: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"