org.apache.jasper.JasperException: Unable to convert string "2010-12-21" to class "java.util.Date" for attribute "add_time": Property Editor not registered with the PropertyEditorManager
at org.apache.jasper.runtime.JspRuntimeLibrary.getValueFromPropertyEditorManager(JspRuntimeLibrary.java:887)
at org.apache.jasper.runtime.JspRuntimeLibrary.convert(JspRuntimeLibrary.java:269)
at org.apache.jasper.runtime.JspRuntimeLibrary.internalIntrospecthelper(JspRuntimeLibrary.java:355)
at org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(JspRuntimeLibrary.java:308)
    pageEncoding="UTF-8"%>
<%@ page import="com.zjl.jc.factory.*, com.zjl.jc.vo.*" %>
<%@ page import="java.util.*" %>
<html>
<head>
<% request.setCharacterEncoding("utf-8"); %>
</head>
<body>
<%
try{
String keyWord = request.getParameter("kw");  //接收查询关键字
if(keyWord==null) {  //判断是否有传递的参数
keyWord = "";
}
List<Product> all = DAOFactory.getIProductDAOInstance().findAll(keyWord); //取得全部记录
Iterator<Product> iter = all.iterator();
%>
<center>
<form action="product_list.jsp" method="post">
请输入查询的关键字可以按商品名称和商品价格查询:<input type="text" name="kw">
<input type="submit" value="查询">
</form>
<form action="product_list.jsp">
<table border="1" width="100%">
<tr>
<td>商品编号</td>
<td>商品名称</td>
<td>商品价格</td>
                                               //省略
<td colspan="2"><center>操作</center></td>
</tr>
<%
while(iter.hasNext()){
Product product = iter.next();
%>
<tr>
<td><%=product.getProduct_id() %></td>
<td><%=product.getProduct_name() %></td>
<td><%=product.getPrice() %></td>
<td><%=product.getSpec() %></td>
<td><%=product.getPattern() %></td>
<td><%=product.getCategory() %></td>
<td><%=product.getSpirit() %></td>
<td><%=product.getYears() %></td>
<td><%=product.getLocality() %></td>
<td><%=product.getMaker() %></td>
<td><%=product.getDealer() %></td>
<td><%=product.getHerstelldatum() %></td>
<td><%=product.getShelf_life() %></td>
<td><%=product.isRangerover()%></td>
<td><%=product.getSale_date() %></td>
<td><%=product.getBuyer() %></td>
<td><%=product.getAdd_time() %></td>
<td><a href="delete_do.jsp?id=<%=product.getProduct_id()%>">删除</a></td>
<td><a href="update.jsp?id=<%=product.getProduct_id()%>">修改</a></td>
</tr>
<%
}
%>
</table>
</form>
</center>
<%
}catch(Exception e) {
e.printStackTrace();   //在tomcat后台打印异常信息
}
%>
</body>
</html><%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.zjl.jc.factory.*, com.zjl.jc.vo.*" %>
<%@ page import="java.util.*" %>
<html>
<head>
</head>
<body>
<center>
<%request.setCharacterEncoding("utf-8");%>
<%
// 接收参数
int id = 0;
try{
id = Integer.parseInt(request.getParameter("id"));
} catch(Exception e) {}
%>
<%
Product product = null;
try{
product = DAOFactory.getIProductDAOInstance().findById(id);
}catch(Exception e) {}
%>
<%
//从数据库里读取后放到页面中去
if(product != null) {
id = product.getProduct_id();
String product_name = product.getProduct_name();
Double price = product.getPrice();
String spec = product.getSpec();
String  pattern = product.getPattern();
String category = product.getCategory();
String spirit = product.getSpirit();
Date years = product.getYears();
String locality = product.getLocality();
String maker = product.getMaker();
String dealer = product.getDealer();
String herstelldatum = product.getHerstelldatum();
String shelf_life = product.getShelf_life();
Boolean rangerover = product.isRangerover();
Date sale_date = product.getSale_date();
String buyer = product.getBuyer();
Date add_time = product.getAdd_time();

%>
<form action="update_do.jsp" method="post">
<table>
<tr>
<td colpan="2">修改商品信息</td>
</tr>
<tr>
<td>商品名称</td>
<td><input type="text" name="product_name" value="<%=product_name%>"/></td>
</tr>
<tr>
<td>商品价格</td>
<td><input type="text" name="price" value="<%=price%>"/></td>
</tr>
<tr>
<td>商品规格</td>
<td><input type="text" name="spec" value="<%=spec%>"/></td>
</tr>
<tr>
<td>商品型号</td>
<td><input type="text" name="pattern" value="<%=pattern%>"/></td>
</tr>
<tr>
<td>商品类型</td>
<td><input type="text" name="prcategoryice" value="<%=category%>"/></td>
</tr>
<tr>
<td>酒精度</td>
<td><input type="text" name="spirit" value="<%=spirit%>"/></td>
</tr>
<tr>
<td>年份</td>
<td><input type="text" name="years" value="<%=years%>"/></td>
</tr>
<tr>
<td>原产地</td>
<td><input type="text" name="locality" value="<%=locality%>"/></td>
</tr>
<tr>
<td>生产厂家</td>
<td><input type="text" name="maker" value="<%=maker%>"/></td>
</tr>
<tr>
<td>销售商</td>
<td><input type="text" name="dealer" value="<%=dealer%>"/></td>
</tr>
<tr>
<td>生产日期</td>
<td><input type="text" name="herstelldatum" value="<%=herstelldatum%>"/></td>
</tr>
<tr>
<td>保质期</td>
<td><input type="text" name="shelf_life" value="<%=shelf_life%>"/></td>
</tr>
<tr>
<td>销售状态</td>
<td><input type="text" name="rangerover" value="<%=rangerover%>"/></td>
</tr>
<tr>
<td>销售日期</td>
<td><input type="text" name="sale_date" value="<%=sale_date%>"/></td>
</tr>
<tr>
<td>购买人</td>
<td><input type="text" name="buyer" value="<%=buyer%>"/></td>
</tr>
<tr>
<td>加入日期</td>
<td><input type="text" name="add_time" value="<%=add_time%>"/></td>
</tr>
<tr>
<td colpsan="2">
<input type="hidden" name="id" value="<%=id%>"/>
<input type="submit" value="修改"/>
<input type="reset" value="重置"/>
</td>
</tr>
</table>
</form>
<%
}
else {
%>
没有发现,要更新的商品信息!!<br>
请确认要更新的商品是否存在!!<br>
<%
}
%>
<h3 href="product_list.jsp">返回商品信息列表页</h3>
</center>
</body>
</html><%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.zjl.jc.factory.*, com.zjl.jc.vo.*" %><html>
<head>
</head>
<body>
<jsp:useBean id="product" class="com.zjl.jc.vo.Product" scope="page"/>
<jsp:setProperty property="*" name="product"/>
<%
response.setHeader("refresh","2;URL=product_list.jsp");
try{
DAOFactory.getIProductDAOInstance().update(product);
%>
商品信息修改成功!!!!2秒后系统自动跳转到商品信息列表页!!<br>
如果没有跳转,请点击<a href="product_list.jsp">这里</a>
<%
} catch(Exception e) {
%>
修改商品信息失败!!2秒后系统自动跳转到商品信息列表页!!<br>
如果没有跳转,请点击<a href="product_list.jsp">这里</a>
<%
}
%>
</body>
</html>public class ProductDAOImpl implements IProductDAO { private Connection conn = null;
private PreparedStatement pstmt = null; // 数据库操作对象 public ProductDAOImpl(Connection conn) {
this.conn = conn;
}
public Product findById(int product_id) throws Exception {
Product product = null;
/* String sql = "select product_id,product_name,price,spec,pattern,category,spirit," 
+"years,locality,maker,dealer,herstelldatum,shelf_life,rangerover,sale_date,buyer,add_time"
+"from product where product_id=?";*/
String sql = "SELECT product_id,product_name,price,spec,pattern,category,spirit,years,"
+" locality,maker,dealer,herstelldatum,shelf_life,rangerover,sale_date,buyer,add_time"
+" FROM product WHERE product_id=?";
this.pstmt = conn.prepareStatement(sql);
this.pstmt.setInt(1, product_id);
//System.out.println(product_id);
ResultSet rs = this.pstmt.executeQuery();
if(rs.next()) {   //如果可以查询到结果
product = new Product(); 
product.setProduct_id(rs.getInt(1));
product.setProduct_name(rs.getString(2));
product.setPrice(rs.getDouble(3));
product.setSpec(rs.getString(4));
product.setPattern(rs.getString(5));
product.setCategory(rs.getString(6));
product.setSpirit(rs.getString(7));
product.setYears(rs.getDate(8));
product.setLocality(rs.getString(9));
product.setMaker(rs.getString(10));
product.setDealer(rs.getString(11));
product.setHerstelldatum(rs.getString(12));
product.setShelf_life(rs.getString(13));
product.setRangerover(rs.getBoolean(14));
product.setSale_date(rs.getDate(15));
product.setBuyer(rs.getString(16));
product.setAdd_time(rs.getDate(17));
}
this.pstmt.close();
return product;    //如果查询不到结果则返回空,默认值为null
} public void update(Product product) throws Exception { String sql = "update product UPDATE product SET product_name=?,price=?,spec=?,"
+" pattern=?,category=?,spirit=?,years=?,locality=?,maker=?,dealer=?,"
+" herstelldatum=?,shelf_life=?,rangerover=?,sale_date=?,buyer=?,"
+" add_time=? where product_id=?";

this.pstmt = conn.prepareStatement(sql);
                  //省略
this.pstmt.setDate(16, new Date(product.getAdd_time().getTime()));
this.pstmt.setInt(17, product.getProduct_id());
this.pstmt.close();
}
}

解决方案 »

  1.   

    代码太长了,你把类里用到的Date类型改成数据库的,或者都改成string,数据库用VARCHAR
      

  2.   

    数据库中给成varhar型的,或则将页面中传过去的时间格式化成数据库中的日期格式,SimpleDateFormat类格式化:SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
            sdf.format(new Date());
      

  3.   

    类型转换错误阿.
    java.util.Date date2 = new Date();
    DateFormat formate = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
    String str = formate.format(date2);把你的date类型转换成string再输出