zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    012 字典
    011 递归
    010 函数与闭包
    009 格式化
    000 机器学习的概念原理
    008 元组
    007 列表
    005 Numpy的基本操作
    071 SparkStreaming与SparkSQL集成
    070 DStream中的transform和foreachRDD函数
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6314135.html
Copyright © 2011-2022 走看看