在属性文件中转义特殊字符

时间:2014-06-25 13:22:36

标签: java velocity

在Velocity属性文件中,如何转义commaspace之类的特殊字符。

prop.put("file.resource.loader.path",
        "C:/Users/Joseph.M/WorkPlace_Struts2/Velocity-ECnet/templates1, "+
        "C:/Users/Joseph.M/WorkPlace_Struts2/Velocity-ECnet/comma, templates2");


Velocity.init(prop);

问题是它是否读取

中的模板

文件夹1:templates1 但不在文件夹2中:comma, templates2

文件夹 comma_template.vm内存在

文件 comma, templates2

enter image description here

错误:

    Exception in thread "main" org.apache.velocity.exception.ResourceNotFoundException:
 Unable to find resource 'comma_template.vm'

1 个答案:

答案 0 :(得分:0)

Velocity会将路径分割为,。它无法识别您有一个名称中包含逗号的文件夹,因此它会看到三条路径:

 C:/Users/Joseph.M/WorkPlace_Struts2/Velocity-ECnet/templates1
 C:/Users/Joseph.M/WorkPlace_Struts2/Velocity-ECnet/comma
 templates2

要解决此问题,您必须重命名该文件夹 - 避免使用空格和逗号。

另一种解决方法可能是使用URLResourceLoader。然后你可以编码非法字符:

"file:///C:/Users/Joseph.M/WorkPlace_Struts2/Velocity-ECnet/templates1, "+
    "file:///C:/Users/Joseph.M/WorkPlace_Struts2/Velocity-ECnet/comma%2c%20templates2"