2013-01-05 74 views
1

這裏是我的struts.xml配置文件,其中我有一個登錄攔截器。我想使用不同的文件上傳攔截器,在不同的文件類型和不同的行動,並給出最大的大小。但問題在於:它始終採用默認的maximumSizeallowedType。 Plz幫助我在哪裏做錯了?如何將fileUpload攔截器與其他攔截器堆棧一起使用?

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts-2.0.dtd"> 

    <struts> 
<constant name="struts.enable.DynamicMethodInvocation" 
    value="false" /> 
<constant name="struts.devMode" value="false" /> 
<constant name="struts.custom.i18n.resources" 
    value="ApplicationResources" /> 

<package name="default" extends="struts-default" namespace="/"> 
    <result-types> 
     <result-type name="tiles" 
      class="org.apache.struts2.views.tiles.TilesResult" /> 
    </result-types> 

    <interceptors> 
     <interceptor name="nlogin" class="com.picvik.interceptor.LoginInterceptor"/> 
     <interceptor-stack name="loginStack"> 
      <interceptor-ref name="servletConfig"/> 
      <interceptor-ref name="params"/> 
      <interceptor-ref name="nlogin"/> 
      <interceptor-ref name="prepare"/> 
      <interceptor-ref name="chain"/> 
      <interceptor-ref name="modelDriven"/> 
      <interceptor-ref name="staticParams"/> 
      <interceptor-ref name="params"/> 
      <interceptor-ref name="conversionError"/> 
      <interceptor-ref name="validation"/> 
      <interceptor-ref name="workflow"/> 
     </interceptor-stack> 
    </interceptors> 
    <!-- <default-interceptor-ref name="loginStack"/> --> 

    <global-results> 
     <result name="login" type="tiles">/login.tiles</result> 
    </global-results> 


    <action name="home" 
     class="com.picvik.action.HomeAction"> 
     <interceptor-ref name="loginStack"/> 
     <result name="success" type="tiles">/home.tiles</result> 
     <result name="error" type="tiles">/welcome.tiles</result> 
    </action> 
    <action name="registration" 
     class="com.picvik.action.RegisterAction" method="execute"> 
     <result name="success" type="tiles">/register.tiles</result> 
    </action> 
    <action name="register" 
     class="com.picvik.action.RegisterAction" method="register"> 
     <result name="success" type="tiles">/registerverify.tiles</result> 
     <result name="error" type="tiles">/register.tiles</result> 
     <result name="input" type="tiles">/register.tiles</result> 
    </action> 
    <action name="verify" 
     class="com.picvik.action.RegisterAction" method="verify"> 
     <result name="success" type="tiles">/login.tiles</result> 
     <result name="error" type="tiles">/registerverify.tiles</result> 
    </action> 

    <action name="login" class="com.picvik.action.LoginAction"> 
     <result name="success" type="tiles">/home.tiles</result> 
     <result name="input" type="tiles">/login.tiles</result> 
    </action> 

    <action name="dologin" class="com.picvik.action.LoginAction" method="login"> 
     <interceptor-ref name="defaultStack"/> 
     <result name="success" type="tiles">/home.tiles</result> 
     <result name="input" type="tiles">/login.tiles</result> 
    </action> 

    <action name="logout" class="com.picvik.action.LoginAction" method="logout"> 
     <interceptor-ref name="defaultStack"/> 
     <result name="success" type="tiles">/login.tiles</result> 
    </action> 

    <action name="viewprofile" class="com.picvik.action.ViewProfileAction"> 
     <interceptor-ref name="loginStack"/> 
     <result name="success" type="tiles">/viewprofile.tiles</result> 
    </action> 
    <action name="editprofile" class="com.picvik.action.ViewProfileAction"> 
     <interceptor-ref name="loginStack"/> 
     <result name="success" type="tiles">/editprofile.tiles</result> 
    </action> 
    <action name="saveprofile" class="com.picvik.action.ViewProfileAction" method = "saveProfile"> 
     <interceptor-ref name="loginStack"/> 
     <result name="success" type="tiles">/home.tiles</result> 
     <result name="input" type="tiles">/editprofile.tiles</result> 
    </action> 

    <action name="changeprofilephoto" class="com.picvik.action.ChangeProfilePhotoAction"> 
     <interceptor-ref name="loginStack"/> 
     <result name="success" type="tiles">/changephoto.tiles</result> 
     <result name="input" type="tiles">/changephoto.tiles</result> 
    </action> 

    <action name="uploadprofilephoto" 
      class="com.picvik.action.ChangeProfilePhotoAction" method="uploadProfilePhoto"> 
     <interceptor-ref name="fileUpload"> 
      <param name="maximumSize">2097152</param> 
      <param name="allowedTypes"> 
       image/png,image/gif,image/jpeg,image/pjpeg 
      </param> 
     </interceptor-ref> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type= "redirectAction"> 
      <param name="actionName">viewprofile</param> 
     </result> 
     <result name="input" type="tiles">/changephoto.tiles</result> 
    </action> 
    <!-- video upload--> 
    <action name="videouploader" 
      class="com.picvik.action.UploadVideoAction" method="execute"> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type="tiles">/videoupload.tiles</result> 
    </action> 

    <action name="uploadvideo" 
      class="com.picvik.action.UploadVideoAction" method="uploadVideo"> 
     <interceptor-ref name="fileUpload"> 
      <param name="maximumSize">209715200</param> 
      <param name="allowedTypes"> 
       video/mp4 
      </param> 
     </interceptor-ref> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type= "redirectAction"> 
      <param name="actionName">editvideo</param> 
     </result> 
     <result name="input" type="tiles">/videoupload.tiles</result> 
    </action> 
    <action name="editvideo" 
      class="com.picvik.action.UploadVideoAction" method="editVideo"> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type= "redirectAction"> 
      <param name="actionName">home</param> 
     </result> 
     <result name="input" type="tiles">/editvideo.tiles</result> 
    </action> 
    <action name="savevideos" 
      class="com.picvik.action.UploadVideoAction" method="saveVideo"> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type= "redirectAction"> 
      <param name="actionName">listVideo</param> 
     </result> 
     <result name="error" type="tiles">/editvideo.tiles</result> 
    </action> 
    <!-- video upload ends here--> 

    <!-- photo upload --> 
    <action name="photouploader" 
      class="com.picvik.action.UploadPhotoAction"> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type="tiles">/photoupload.tiles</result> 
    </action> 

    <action name="uploadphoto" 
      class="com.picvik.action.UploadPhotoAction" method="uploadPhoto"> 
     <interceptor-ref name="fileUpload"> 
      <param name="maximumSize">20971520</param> 
      <param name="allowedTypes"> 
       image/png,image/gif,image/jpeg,image/pjpeg 
      </param> 
     </interceptor-ref> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type= "redirectAction"> 
      <param name="actionName">editphoto</param> 
     </result> 
     <result name="input" type="tiles">/photoupload.tiles</result> 
    </action> 

    <action name="editphoto" 
      class="com.picvik.action.UploadPhotoAction" method="editPhoto"> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type= "redirectAction"> 
      <param name="actionName">home</param> 
     </result> 
     <result name="input" type="tiles">/editphoto.tiles</result> 
    </action> 
    <action name="savephotos" 
      class="com.picvik.action.UploadPhotoAction" method="savePhoto"> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type= "redirectAction"> 
      <param name="actionName">listalbum</param> 
     </result> 
     <result name="error" type="tiles">/editphoto.tiles</result> 
    </action> 

    <action name="listalbum" 
      class="com.picvik.action.ViewAlbumAction" method="listAlbum"> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type="tiles">/listalbum.tiles</result> 
    </action> 

    <action name="listphoto" 
      class="com.picvik.action.ViewAlbumAction" method="listPhoto"> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type="tiles">/listphoto.tiles</result> 
    </action> 

    <action name="listalbumphoto" 
      class="com.picvik.action.ViewAlbumAction" method="listAlbumPhoto"> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type="tiles">/listalbumphoto.tiles</result> 
    </action> 

    <action name="viewphoto" 
      class="com.picvik.action.ViewAlbumAction" method="viewPhoto"> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type="tiles">/viewphoto.tiles</result> 
    </action> 

    <action name="commentonphoto" 
      class="com.picvik.action.CommentAction" method="commentOnPhoto"> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type= "redirectAction"> 
      <param name="actionName">listphoto</param> 
     </result> 
    </action> 

    <action name="commentonalbum" 
      class="com.picvik.action.CommentAction" method="commentOnAlbum"> 
     <interceptor-ref name="loginStack"></interceptor-ref> 
     <result name="success" type= "redirectAction"> 
      <param name="actionName">listalbum</param> 
     </result> 
    </action> 

</package> 

+0

你的意思是驗證不起作用? –

+0

驗證正在工作,但對於所有操作,maximumsize正在驗證爲默認值,但未採用我在特定操作中給出的參數值。 – Ananda

+0

也沒有給出任何錯誤,當我試圖上傳文件類型不在允許的文件列表 – Ananda

回答

1

,使用以下配置屬性來覆蓋缺省

struts.multipart.maxSize=2097152 

對從default.properties服用。末尾沒有0注。

檢查documentation和示例如何使用fileUpload攔截器。

+0

yes得到的解決方案。日Thnx – Ananda