开发笔记

来源:互联网 发布:糊是什么意思网络语言 编辑:程序博客网 时间:2024/05/19 18:18

1.使fmt:formatDate应用于<form:input>

<fmt:formatDate value="${queryDTO.sdate}" type="date" pattern="yyyy-MM-dd" var="theFormattedSdate" /><form:input path="sdate" onchange="ckdate()" value="${theFormattedSdate}"cssClass="form-control input-sm form_date required"></form:input>

原理:不能将一个JSP标签嵌套在另一个JSP标签中。
参考:https://stackoverflow.com/questions/11736150/how-to-make-fmtformatdate-work-for-forminput

2.SpringMVC 使用JSR-303进行校验 @Valid
参考:http://www.cnblogs.com/yangzhilong/p/3724967.html
<1>准备校验时使用的JAR

validation-api-1.0.0.GA.jar:JDK的接口;
hibernate-validator-4.2.0.Final.jar是对上述接口的实现;
log4j、slf4j、slf4j-log4j

<2>编写需要校验的bean

@NotNull(message="名字不能为空")private String userName;@Max(value=120,message="年龄最大不能查过120")private int age;@Email(message="邮箱格式错误")private String email;

这里注意NotNull、NotEmpty、NotBlank的区别

<3>校验方法

@RequestMapping("/login")    public String testValid(@Valid User user, BindingResult result){        if (result.hasErrors()){            List<ObjectError> errorList = result.getAllErrors();        }        return newMAV().addObject("error", errorList);    }

备注:这里一个@Valid的参数后必须紧挨着一个BindingResult 参数,否则spring会在校验不通过时直接抛出异常;errorList集合里封装了每个出错字段的error对象。

前台可以使用spring的标签库也可以自己自定义处理。
spring标签库的用法:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>   <html>   <head>   <title>Reservation Form</title>   <style>   .error {       color: #ff0000;       font-weight: bold;   }   </style>   </head>   <body>       <form:form method="post" modelAttribute="vm">           <form:errors path="*" cssClass="error" />           <table>               <tr>                   <td>Name</td>                   <td><form:input path="userName" />                   </td>                   <td><form:errors path="userName" cssClass="error" />                   </td>               </tr>               <tr>                   <td>email</td>                   <td><form:input path="email" />                   </td>                   <td><form:errors path="email" cssClass="error" />                   </td>               </tr>               <tr>                   <td colspan="3"><input type="submit" />                   </td>               </tr>           </table>       </form:form>   </body>   </html> 

其实直接取error的值即可:<form:errors path="被注解的字段名" cssClass="error" />

3.标签
该标签下,采用foreach循环,导致数据无法回显,默认为<option value="" selected></option>。以下为错误示例。

<form:select path="agreementType" itemValue="${agreementType}" cssClass="form-control input-sm">   <option value="" selected></option>   <c:forEach items="${AGREEMENT_TYPE}" var="item">       <option value="${item.dictCode}">${item.dictNameCn}</option>   </c:forEach></form:select>

正确示例。
采用form:options标签

<form:select path="agreementType" cssClass="form-control input-sm">                                    <form:option value=""></form:option>                                    <form:options items="${AGREEMENT_TYPE}" itemValue="dictCode" itemLabel="dictNameCn"/>                                </form:select>