利用SpringMVC3框架验证@DateTimeFormat注解时,遇到一个奇的错,只要表单中的日期字段一输入值则就会如下错:
让人很莫名其妙。查了许久,也试了不少网上说的方法,比如有的说缺少joda-time-2.3.jar包的引用(后来证实不是这个原因)。
JAVA代码如下片段如下:
@Resource public class Employee { private String id; private String lastName; private int gende; private String email; @DateTimeFormat(pattern="yyyy-MM-dd") private Date birth; private Department department;
页面内容如下:
<form:form action="${pageContext.request.contextPath }/emp" method="POST" modelAttribute="employee"> <c:if test="${empty employee.id }"> LastName:<form:input path="lastName" value="" /> </c:if> <c:if test="${!empty employee.id}"> <form:input type="hidden" path="id"></form:input> <input type="hidden" name="_method" value="PUT"></input> </c:if> <br> <% HashMap<String,String> gendes = new HashMap<String,String>(); gendes.put("0","female"); gendes.put("1","male"); request.setAttribute("gendes", gendes); %> Gender:<br> <form:radiobuttons path="gende" items="${gendes }" delimiter="<br>" /> <br> Email:<form:input path="email" /> <br> Department:<form:select path="department.depId" items="${departments}" itemLabel="depName" itemValue="depId"></form:select> <br> Birth:<form:input path="birth"/> <br> <input type="submit" value="Submit"></input> </form:form>
springmvc.xml配置中含有此配置:
<mvc:annotation-driven></mvc:annotation-driven>
从以上看过来,确实无法发现有什么问题,后来再写个更简单的测试时发现,原来是JAVA代码中的Date类型Eclipse默认引用了java.sql.Date的类,而不是我们想引入的java.util.Date。更正后马上可以的了。
网上查找此问题时发现有不少同朋友也遇到,有可能也是这个问题,希望对大家有帮助。
时间: 2024-09-27 06:48:05