直接上代码:JSP页面:<SCRIPT LANGUAGE="JavaScript">function CheckForm(){
if(isEmpty(trim(document.submitForm.name.value))){
alert("对不起!请您填入专题名称。");
document.submitForm.name.focus();
return false;
}
if(isEmpty(trim(document.submitForm.alias.value))){
alert("对不起!请您填入专题别名。");
document.submitForm.alias.focus();
return false;
}
if(isEmpty(trim(document.submitForm.picture.value))){
alert("请选择图片!");
document.submitForm.picture.focus();
return false;
}

submitForm.submit();
}</SCRIPT><form name="submitForm" action="special.do" method="post" enctype="multipart/form-data">
  <input type="file" name="picture" size="35"> 
   <a href="#" onclick="CheckForm()"><img src="../../image/2_buttom01.gif" title="上传" width="59" height="19" border=0></a> 
</form>控制台错误信息: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.PropertyUtils.setSimpleProperty(PropertyUtils.java:1789)
at org.apache.commons.beanutils.PropertyUtils.setNestedProperty(PropertyUtils.java:1684)
at org.apache.commons.beanutils.PropertyUtils.setProperty(PropertyUtils.java:1713)
at org.apache.commons.beanutils.BeanUtils.setProperty(BeanUtils.java:1019)
at org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:808)
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:1252)
at org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:821)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:254)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.websh.esp.common.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:80)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
页面错误信息: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:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
com.websh.esp.common.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:80)
root causejava.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:597)
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:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
com.websh.esp.common.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:80)ACTION第一段代码是:
System.out.println("-------------------------上传");
控制台没有显示
附件说明:其他配置文件都是正确的!!!

解决方案 »

  1.   

    还没进到你的action就已经出问题了。参数类型不匹配,你把过滤器的代码发上来看看
      

  2.   

    过滤器代码:
    public class SetCharacterEncodingFilter implements Filter {  // ----------------------------------------------------- Instance Variables  /** 
     * The default character encoding to set for requests that pass through 
     * this filter. 
     */ 
    protected String encoding = null;  /** 
     * The filter configuration object we are associated with. If this value 
     * is null, this filter instance is not currently configured. 
     */ 
    protected FilterConfig filterConfig = null;  /** 
     * Should a character encoding specified by the client be ignored? 
     */ 
    protected boolean ignore = true;  // --------------------------------------------------------- Public Methods  /** 
     * Take this filter out of service. 
     */ 
    public void destroy() {  this.encoding = null; 
    this.filterConfig = null;  }  /** 
     * Select and set (if specified) the character encoding to be used to 
     * interpret request parameters for this request. 
     * 
     * @param request The servlet request we are processing 
     * @param result The servlet response we are creating 
     * @param chain The filter chain we are processing 
     * 
     * @exception IOException if an input/output error occurs 
     * @exception ServletException if a servlet error occurs 
     */ 
    public void doFilter(ServletRequest request, ServletResponse response, 
    FilterChain chain) 
    throws IOException, ServletException {  // Conditionally select and set the character encoding to be used 
    if (ignore || (request.getCharacterEncoding() == null)) { 
    String encoding = selectEncoding(request); 
    if (encoding != null) 
    request.setCharacterEncoding(encoding); 
    }  // Pass control on to the next filter 
    chain.doFilter(request, response);  }  /** 
     * Place this filter into service. 
     * 
     * @param filterConfig The filter configuration object 
     */ 
    public void init(FilterConfig filterConfig) throws ServletException {  this.filterConfig = filterConfig; 
    this.encoding = filterConfig.getInitParameter("encoding"); 
    String value = filterConfig.getInitParameter("ignore"); 
    if (value == null) 
    this.ignore = true; 
    else if (value.equalsIgnoreCase("true")) 
    this.ignore = true; 
    else if (value.equalsIgnoreCase("yes")) 
    this.ignore = true; 
    else 
    this.ignore = false;  }  // ------------------------------------------------------ Protected Methods  /** 
     * Select an appropriate character encoding to be used, based on the 
     * characteristics of the current request and/or filter initialization 
     * parameters. If no character encoding should be set, return 
     * <code>null</code>. 
     * <p> 
     * The default implementation unconditionally returns the value configured 
     * by the <strong>encoding</strong> initialization parameter for this 
     * filter. 
     * 
     * @param request The servlet request we are processing 
     */ 
    protected String selectEncoding(ServletRequest request) {  return (this.encoding);  } }备注:其他功能均可以实现
      

  3.   

    你代码中有调用BeanUtils.populate这个的地方不??
      

  4.   


    没有,加上enctype="multipart/form-data"就错了  不加就对的 不会出错
      

  5.   

    上传文件一定要加 enctype="multipart/form-data"form里面的picture属性是什么类型的?是File类型吗?