• Struts2中的struts.multipart.saveDir的配置


    <constant name="struts.multipart.saveDir" value="D:\AsimsTemp"></constant>

    黑体部分应为“\”,否则回导致action中的自动封装数据失败,从而导致validate中验证出现空指针“NullPointer”

    另外:

    <constant name="struts.multipart.saveDir" value="/temp" /> 将上传的临时文保存到D:/temp,而不是项目的WebAppRoot+/temp 下

    原因解释:

    当你配置"struts.multipart.saveDir"时,struts会将目录定向为:

    1. if (saveDir != null) {
    2. fac.setRepository(new File(saveDir));
    3. }
    1. if (saveDir != null) {  
    2.     fac.setRepository(new File(saveDir));  
    3. }  

    当"struts.multipart.saveDir"为“/temp”时,很容易验证 : 

    new File("/temp").getAbsolutePath(); 

    为当前的根目录下的temp目录。 


    当你使用相对路径比如 "myproject/temp"配置时,效果依然不行。因为 

    new File(相对路径) 得到的结果是: 

    user.dir + 相对路径 

    在Tomcat下user.dir是 Tomcat目录下的bin目录,所以上述路径最终是: 

    Tomcat/bin/myproject/temp 

    ( 不要试图使用 ../webapps/myproject/temp , 这样是不成功的)。

    解决办法2个,个人爱好自选: 

    1、更改user.dir的默认值。 

    在系统启动的时候,用ServletContextListener修改系统属性。 
    System.setProperty("user.dir","你的Tomcat的目录下的webapps"); 

    然后在配置:

    1. <constant name="struts.multipart.saveDir" value="yourproject/temp"></constant>
    1. <constant name="struts.multipart.saveDir" value="yourproject/temp"></constant>  


    2、直接了当:

    1. <constant name="struts.multipart.saveDir" value="绝对路径"></constant>
  • 相关阅读:
    CodeForces 7B
    CodeForces 4D
    离散化
    线段树入门
    洛谷 P3951 小凯的疑惑(赛瓦维斯特定理)
    Codeforces 1295D Same GCDs (欧拉函数)
    Codeforces 1295C Obtain The String (二分)
    Codeforces 1295B Infinite Prefixes
    Codeforces 1295A Display The Number(思维)
    Codeforces 1294F Three Paths on a Tree(树的直径,思维)
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6314135.html
Copyright © 2020-2023  润新知