javax.servlet的生命周期.servlet的生命周期Exception: BeanUtils.populate

jsp页面:
&html:form action="/pic.do"& method="post"&
&html:file property="pic"&&/html:file&
&html:submit value="上传"&&/html:submit&
&/html:form&
formbean
public class PicForm extends ActionForm {
private FormFile&
public FormFile& getPic() {
public void setPic(FormFile& pic) {
this.pic =
}
}
Action
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException {
PicForm picForm = (PicForm)// TODO Auto-generated method stub
FormFile file =picForm.getPic();
String photoPath = this.getServlet().getServletContext().getRealPath("/") + "upload\\" + file.getFileName();//存储目录,可以在配置文件里设置,这样可以方便更改存储目录
System.out.print(photoPath);
FileOutputS
fos = new FileOutputStream(photoPath);
fos.write(file.getFileData());
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
报错误
javax.servlet.ServletException: BeanUtils.populate
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:495)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:816)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
java.lang.IllegalArgumentException: Cannot invoke com.yourcompany.struts.form.PicForm.setPic - argument type mismatch
org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1778)
org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1759)
org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1648)
org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1677)
org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1022)
org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811)
org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298)
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:493)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:816)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
解决办法
jsp页面:
&html:form action="/pic.do" enctype="multipart/form-data"& method="post"&
&html:file property="pic"&&/html:file&
&html:submit value="上传"&&/html:submit&
&/html:form&
浏览: 200140 次
来自: 北京
这是什么书的介绍?
支持一下,说的很详细啊.
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'关于BeanUtils.populate的解决
BeanUtils.populate
在Struts开发中遇到了这个问题:javax.servlet.ServletException:
BeanUtils.populate
可能原因如下:
& &1.JSP页面是Sing
类型的,如果actionForm里头的数据定义成别的类型,就会报这个错&
& &2.JSP页面的字段什么写错了。
&3.当上传文件有&html:file&
时如果不定仪表单为 enctype="multipart/form-data"&
&4.页面中有&html:hidden
property="bid.goods.goodsId" value="${good.goodsId}"
&&%--bid是formBean中的一个属性(也是一个实体类对象),goods是bid中的一个属性(也是一个实体类对象)--%&
&异常信息:
注意:通过页面向action提交数据时,如果使用formBean进行封装数据,
并且formBean属性中的属性是实体Bean,封装数据会报异常。
其主要原因是在页面为formBean的属性赋值时,
struts底层代码只能识别formBean的属性可以是实体Bean,
不能识别出属性的属性是实体Bean。
所以我的解决方法是在Bid中自己添加一个字段goodsId
&然后再对应的Action中使用findGoodsByGoodsId找到goods对象
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。BeanUtils.populate的作用
首先,它是在org.apache.commons.beanutils.BeanUtils包中的一个方法。
方法的作用:用来将一些 key-value 的值(例如 hashmap)映射到 bean 中的属性。
servlet中有这样的使用:
先定义form表单内容的Info对象(当然你要先写一个bean,这个bean中包含form表单中各个对象的属性)
InsuranceInfo info = newInsuranceInfo();
(这是一个javabean)
BeanUtilities.populateBean(info, request);
——& populateBean(info,request.getParameterMap());(先将request内容转为Map类型)
——&BeanUtils.populate(info,propertyMap);(调用包中方法映射)
映射的过程就是将页面中的内容先用request获得,然后再将之转换为Map(这里用request.getParameterMap())
最后使用BeanUtils.populate(info,map)方法将页面各个属性映射到bean中。之后我们就可以这样使用bean.getXxxx()来取值了。package playecsp.
import java.beans.BeanI
import java.beans.I
import java.beans.PropertyD
import java.lang.reflect.M
import java.util.HashM
import java.util.M
public class BeanUtils extends org.apache.commons.beanutils.BeanUtils {
* Map转换成对象(使用apache commons实现)
* @param map
* @param t
* @param &T&
public static &T& T map2Bean(Map&String, Object& map, T t) {
if(map == null || t == null) {
return null;
org.apache.commons.beanutils.BeanUtils.populate(t, map);
} catch (Exception e) {
e.printStackTrace();
* Map转换成对象(JDK实现)
* @param map
* @param t
* @param &T&
public static &T& T map2BeanJava(Map&String, Object& map, T t) {
if(map == null || t == null) {
return null;
BeanInfo beanInfo = Introspector.getBeanInfo(t.getClass());
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
for(PropertyDescriptor pd : pds) {
String key = pd.getName();
if(map.containsKey(key)) {
Object value = map.get(key);
Method setter = pd.getWriteMethod();
setter.invoke(t, value);
} catch (Exception e) {
e.printStackTrace();
* 对象转换成Map(JDK实现)
* @param obj
public static Map&String, Object& bean2MapJava(Object obj) {
if(obj == null) {
return null;
Map&String, Object& rtnMap = new HashMap&&();
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
for(PropertyDescriptor pd : pds) {
String key = pd.getName();
if(!key.equals("class")) {
Method getter = pd.getReadMethod();
Object value = getter.invoke(obj);
rtnMap.put(key, value);
} catch (Exception e) {
e.printStackTrace();
return rtnM
public static void tests() {
//EntityA ea = EntityA.findByID(id);
//EntityAHis nah = new EntityAHis();
//org.apache.commons.beanutils.BeanUtils.copyProperties(nah, nae);
使用BeanUtils.populate方法转化Map为Javabean时get与set方法的命名规则
BeanUtils.populate的用法
BeanUtils.populate 用法
BeanUtils.populate(obj,map)的作用
关于BeanUtils.populate的解决
beanutils.populate用法
没有更多推荐了,javax.servlet.ServletException: BeanUtils.populate - ITeye问答
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
description The server encountered an internal error () that prevented it from fulfilling this request.
javax.servlet.ServletException: BeanUtils.populate
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1254)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.wutai.common.servlet.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:113)
root cause
java.lang.IllegalArgumentException: argument type mismatch
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:585)
org.apache.commons.beanutils.PropertyUtils.setSimpleProperty(PropertyUtils.java:1789)
org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.java:1684)
org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:1713)
org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:1019)
org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
com.wutai.common.servlet.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:113)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.23 logs.
--------------------------------------------------------------------------------
Apache Tomcat/5.5.23
采纳的答案
argument type mismatch& 参数类型不符合的异常,检查下ibatis相应sql的配置
已解决问题
未解决问题你的位置: >>
本站提供以下服务:外链发布、SEO软件、蜘蛛池出租、站群软件、下拉营销、问答营销、软文营销等服务。业务电话(微信 ):QQ:&技术交流群:
Bcastr幻灯片

我要回帖

更多关于 servlet生命周期 的文章

 

随机推荐