java - Apache Tiles + 文件夹路径中的空格

标签 java windows tomcat spring-mvc apache-tiles

我目前正在从事一个涉及 Apache Tiles 的项目,但遇到了以下问题。
项目文件夹的路径名中有(一个或多个)空格。

C:\Users\MyUsername\Documents\Dropbox\Subfolder\My Projects\GymApp

现在,令我惊讶的是,当我使用 Apache Tiles 时,它会尝试从以下位置加载 tile-definition.xml:

C:\Users\MyUsername\Documents\Dropbox\Subfolder\My%20Projects\GymApp\src\main\webapp\WEB-INF\configurations\tile-definition.xml

所以问题出在工具 X 尝试将所有空格转换为 %20(URL 编码)的部分,其中工具 X 是:Windows、Java、Tomcat、Spring 或 Apache Tiles。由于这个 Apache Tiles 无法加载文件,因为文件不存在(如果我尝试在 Windows 资源管理器中打开 URL,它会给出文件不存在的错误,同样的事情会出现在我的 IDE 的控制台日志中).

至于我的问题,是否可以在包含空格的文件夹中运行 Apache Tiles 项目?如果是这样,这是如何完成的?

注意*:如果我将 My Projects 的文件夹名称更改为 My_Projects 项目运行时没有任何错误,所以我知道文件夹路径在这里有问题。

-- 编辑--
我使用这段代码来配置 tilesConfigurer

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
</bean>

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    <property name="definitions" value="/WEB-INF/configurations/tiles.xml" />
</bean>

-- 编辑 2 --
这是我的 IDE 日志显示的内容:

DEBUG BaseLocaleUrlDefinitionDAO:154 - File Resource file:/C:/Users/MyUsername/Documents/Dropbox/Subfolder/My%20Projects/GymApp/src/main/webapp/WEB-INF/configurations/tiles.xml at file:/C:/Users/MyUsername/Documents/Dropbox/Subfolder/My%20Projects/GymApp/src/main/webapp/WEB-INF/configurations/tiles.xml not found, continue
DEBUG BaseLocaleUrlDefinitionDAO:154 - File Resource file:/C:/Users/MyUsername/Documents/Dropbox/Subfolder/My%20Projects/GymApp/src/main/webapp/WEB-INF/configurations/tiles_en.xml at file:/C:/Users/MyUsername/Documents/Dropbox/Subfolder/My%20Projects/GymApp/src/main/webapp/WEB-INF/configurations/tiles_en.xml not found, continue
DEBUG TestDispatcherServlet:938 - Could not complete request
javax.servlet.ServletException: Could not resolve view with name 'home' in servlet with name ''

最佳答案

在指定 tilesConfigurer bean 时是否使用上下文相关路径?因为如果您这样做,您的项目文件夹是否包含空格应该无关紧要。

我的 dispatcher-servlet.xml 中有以下代码:

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
</bean>
<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/tiles/config/template-definitions.xml</value>
            <value>/WEB-INF/tiles/config/page-definitions.xml</value>
        </list>
    </property>
</bean>

...即使我的项目文件夹包含空格,Tiles 仍会找到 definition-xml。

关于java - Apache Tiles + 文件夹路径中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20095165/

相关文章:

java - 将字符串转换为 JSON 并获取值

java - 如何通过maven将java jar文件部署到远程服务器

apache - 在代理到 tomcat 之前在 apache 中设置 REMOTE_USER

java - 从 RESTful Web 服务访问 JSF2 托管 Bean

Java 跨平台 Swing 外观

java - 尝试定义自定义 PropertyMap 时出现 NullPointerException

java - 如何修复此 DataBinding 和 LiveData 代码?

Mac Spaces 的 Windows 实现

windows - Chocolatey 在本地安装,但不在 docker 构建中安装(但上周安装了) - 为什么?

python - 有没有办法通过 python 将任务删除到 Windows 任务计划程序?