<action name="upload" class="com.action.UploadActon">
<result name="success">/index.jsp</result>
<interceptor-ref name="fileUpload">
<param name="allowedTypesSet">txt</param>
</interceptor-ref>
</action>
新手练习,  如果加上这个 fileUpload 拦截器,在UploadAction中就无法获得相应文件上传的信息,结果报空指针异常。如果不加,则正常运行. 不知道是什么原因,求解...

解决方案 »

  1.   

    被拦截了呗,这个你得查看你的fileUpload中的配置,
    记得有个文件大小设置的,超出的就拦截了,
    我自己的看法,希望给你点思路。
      

  2.   

    因为你这么写的话,他就不用默认的拦截器栈了,而只用fileupload这个拦截器了
      

  3.   

    你不写的话默认就有fileupload这个拦截器,看下struts-default.xml里的配置  <interceptor-stack name="defaultStack">
                    <interceptor-ref name="exception"/>
                    <interceptor-ref name="alias"/>
                    <interceptor-ref name="servletConfig"/>
                    <interceptor-ref name="prepare"/>
                    <interceptor-ref name="i18n"/>
                    <interceptor-ref name="chain"/>
                    <interceptor-ref name="debugging"/>
                    <interceptor-ref name="profiling"/>
                    <interceptor-ref name="scopedModelDriven"/>
                    <interceptor-ref name="modelDriven"/>
                    <interceptor-ref name="fileUpload"/>
                    <interceptor-ref name="checkbox"/>
                    <interceptor-ref name="staticParams"/>
                    <interceptor-ref name="params">
                      <param name="excludeParams">dojo\..*</param>
                    </interceptor-ref>
                    <interceptor-ref name="conversionError"/>
                    <interceptor-ref name="validation">
                        <param name="excludeMethods">input,back,cancel,browse</param>
                    </interceptor-ref>
                    <interceptor-ref name="workflow">
                        <param name="excludeMethods">input,back,cancel,browse</param>
                    </interceptor-ref>
                </interceptor-stack>
      

  4.   

    struts-default.xml里的配置<default-interceptor-ref name="defaultStack"/>
      

  5.   

    <package name="default" extends="struts-default">
    在你的文件上传的拦截器上面添加defaultStack的拦截器
    <interceptor-ref name ="defaultStack" /> 
      

  6.   

    难道使用自定义的拦截器,也得用defaultstack?
      

  7.   

    struts-default里面定义了, 默认的拦截器引用是defaultStack,
    也就是说当你没有引用拦截器的时候, 他会自动帮你引用,
    如果当你引用了自己的拦截器, 那么是不会管你的.!
    不是非得使用defaultStack,  是必须使用defaultStack中的某一些拦截器.!
    比如说params,servletConfig等等, 如果没有这些拦截器,那么 请求参数不会填充和servletApi你也拿不到
    其他必须拦截器自己去看看吧!
      

  8.   

    defaultStack
     <param name="allowedTypesSet">txt</param>
    这个也有问题 
      

  9.   

     <interceptor-ref name="defaultStack">
     <interceptor-ref name="fileUpload">
                    <param name="allowedTypesSet">txt</param>
     </interceptor-ref>这样写就ok了