package cn.customer.web.controller;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.customer.domain.Customer;
import cn.customer.service.impl.BusinessService;
import cn.customer.utils.WebUtils;public class AddCustomerServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
Customer customer = WebUtils.request2Bean(request, Customer.class); //调用webutils工具给bean赋值
customer.setId(WebUtils.makeId());
BusinessService service = new BusinessService();
service.addCustomer(customer);
request.setAttribute("message", "客户添加成功!");
} catch (Exception e) {
e.printStackTrace();
request.setAttribute("message", "客户添加失败!");
}
request.getRequestDispatcher("/message.jsp").forward(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
解决方案 »
- 如何获取jsp 文件下载提示框上面的button 句柄
- spring 注入问题求网友解答
- 关于Tiles框架在struts-config.xml中的设置跳转的问题
- jdbc数据源(使用lomboz+eclipse)的配置问题
- tomcat启动出现很多java进程
- 三个jsp中字符转换问题(我这样转换对吗?),请高手赐教!
- 用jQuery从服务器上取数据
- 如何用jsp实现调出mysql数据20050706以2005-07-06 显示?
- 不能从SQL SERVER中取出完整的日期时间值?
- 出现乱码,这是什么原因?
- 如何通过java 后台发送http请求(请求中有动提交脚本)?
- jsp新手,请问一个关于jsp、html、servlet的结构问题
private String id;
private String name;
private String gender;
private Date birthday;
private String cellphone;
private String email;
private String hobby;
private String type;
private String description;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getCellphone() {
return cellphone;
}
public void setCellphone(String cellphone) {
this.cellphone = cellphone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}/*id varchar(40) primary key,
name varchar(40) not null,
gender varchar(4) not null,
birthday date,
cellphone varchar(20) not null,
email varchar(40),
hobby varchar(200),
type varchar(100),
description varchar(255)*/
email : [email protected]
description : ddd
cellphone : 123456789
name : 二狗
hobby : 足球,篮球
hob : 足球
gender : 男
type : 重要客户
换个号接着来,这是错误提示:错误提示:
[code=java]
2013-11-9 15:41:29 org.apache.commons.beanutils.PropertyUtilsBean invokeMethod
严重: Method invocation failed.
java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1773)
at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1759)
at org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1648)
at org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1677)
at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1022)
at org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:313)
at cn.customer.utils.WebUtils.request2Bean(WebUtils.java:26)
at cn.customer.web.controller.AddCustomerServlet.doGet(AddCustomerServlet.java:31)
at cn.customer.web.controller.AddCustomerServlet.doPost(AddCustomerServlet.java:47)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)[/code]
String value = request.getParameter(name);
而 BeanUtils.setProperty这个方法不能自动进行类型转换 ,所以就报类型不匹配错误了。
遍历request里值时可以加个判断,如果是birthday先转为Date类型,再setProperty应该就可以了
java.lang.RuntimeException: org.apache.commons.beanutils.ConversionException
at cn.customer.utils.WebUtils.request2Bean(WebUtils.java:39)
at cn.customer.web.controller.AddCustomerServlet.doGet(AddCustomerServlet.java:20)
at cn.customer.web.controller.AddCustomerServlet.doPost(AddCustomerServlet.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.commons.beanutils.ConversionException
at org.apache.commons.beanutils.locale.BaseLocaleConverter.convert(BaseLocaleConverter.java:231)
at org.apache.commons.beanutils.locale.BaseLocaleConverter.convert(BaseLocaleConverter.java:195)
at org.apache.commons.beanutils.ConvertUtilsBean.convert(ConvertUtilsBean.java:428)
at org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1002)
at org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:313)
at cn.customer.utils.WebUtils.request2Bean(WebUtils.java:33)
... 16 more
Caused by: java.lang.NullPointerException
at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:675)
at java.text.SimpleDateFormat.applyPattern(SimpleDateFormat.java:2042)
at org.apache.commons.beanutils.locale.converters.DateLocaleConverter.parse(DateLocaleConverter.java:256)
at org.apache.commons.beanutils.locale.BaseLocaleConverter.convert(BaseLocaleConverter.java:225)
... 21 more
空模式提供,违约:yy-m-d
import java.util.Date;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;public class Test {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException {
try {
Class clz = Class.forName("com.jsj.cms.modules.index.bo.Customer");
Customer customer = (Customer)clz.newInstance();
ConvertUtils.register(new DateLocaleConverter(), Date.class);
BeanUtils.setProperty(customer, "name", "test");
BeanUtils.setProperty(customer, "birthday", "1921-07-17");
System.out.println(customer.getName());
System.out.println(customer.getBirthday());
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
Apache Commons BeanUtils 1.9.1下载地址:
http://commons.apache.org/proper/commons-beanutils/download_beanutils.cgi