Плитки Apache + пробелы в пути к папке

В настоящее время я работаю над проектом, связанным с Apache Tiles, но столкнулся со следующей проблемой.
Папка проекта содержит (один или несколько) пробелов в имени пути.

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

Теперь, к моему удивлению, когда я использую плитки Apache, он пытается загрузить 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 не может загрузить файл, так как файл не существует (если я пытаюсь открыть URL-адрес в проводнике Windows, это дает мне ошибку, что файл не существует, то же самое отображается в журнале консоли моей 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 ''

person Jaap Oudejans    schedule 20.11.2013    source источник
comment
Я тоже получаю эту проблему. Вы нашли способ решить эту проблему?   -  person jonasespelita    schedule 14.07.2014
comment
@jonasespelita, к сожалению, нет, я «исправил» это, не используя пробелы в пути.   -  person Jaap Oudejans    schedule 15.07.2014


Ответы (2)


Используете ли вы контекстно-зависимые пути при указании бинаtilesConfigurer? Потому что, если вы это сделаете, не имеет значения, содержит ли папка вашего проекта пробелы.

У меня есть следующий код в файле 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 все равно находит определение-xml.

person Hanno    schedule 21.11.2013
comment
Я добавил код, который использую, и журнал ошибок моих тестов JUnit + MockMvc. Запуск тех же тестов с правильным путем к проекту проходит тесты без каких-либо ошибок. - person Jaap Oudejans; 22.11.2013

Я знаю, что это старая тема, но она не была отмечена как решенная, и у меня была похожая проблема, и, возможно, это поможет другим людям.

При параллельном развертывании Tomcat, когда вы добавляете ##2, чтобы указать военную версию, она будет развернута в папку с тем же (включая символы #), а те экранируются в %23, что дало тот же результат - tile.xml может не загружаться.

Чтобы решить эту проблему, я переопределяю класс URLApplicationResource и в обоих конструкторах вместо

file = new File(url.getPath());

я использовал

file = new File(url.toURI());
person Marius Corneschi    schedule 04.03.2020