Проблемы с настройкой сопоставления URL в Spring MVC 2.5 - PullRequest
1 голос
/ 10 февраля 2010

В моем файле web.xml есть следующее:

<servlet>
    <servlet-name>onBoardingUI</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>sample</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>sample</servlet-name>
    <url-pattern>*.form</url-pattern>
</servlet-mapping>

и в моем файле sample-servlet.xml:

 <bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

    <!-- one of the properties available; the maximum file size in bytes -->
    <!-- <property name="maxUploadSize" value="100000" /> -->
</bean>

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <value>
            /fileupload.form=fileUploadController
        </value>
    </property>
</bean>

<bean id="fileUploadController" class="com.wrightexpress.si.onboardingui.web.FileUploadController">
    <property name="commandClass" value="com.wrightexpress.si.onboardingui.service.UploadFile" />
    <property name="formView" value="process-file" />
    <property name="successView" value="results" />
</bean>

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="viewClass"
        value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
</bean>

Теперь при развертывании приложения я получаю 404 при попадании в корневой контекст. Никаких исключений или чего-либо в журнале сервера. Я понял, что устанавливаю обработчик URL, но по какой-то причине запросы не проходят. Я пробовал различные формы объявления отображений сервлетов в web.xml, но безрезультатно. У меня есть простая форма загрузки файла с действием fileupload.form.

Спасибо!

РЕДАКТИРОВАТЬ: у меня есть ряд страниц JSP, которые в настоящее время обслуживаются через ViewResolver, определенный выше. Они перестают работать, когда я добавляю bean-компонент urlMapping. Теперь я не знаю, как мне поступить, если я просто применю отображение сервлета / * в файле web.xml, как мне указать в файле sample-servlet.xml, к какому контроллеру привязать каждый jsp кроме индивидуально? Или как мне сохранить мой web.xml как есть, и только определенный обработчик URL может обработать действие fileupload.form?

Ответы [ 2 ]

0 голосов
/ 10 февраля 2010

Вы уверены, что ваш web.xml не так ли? у вас есть DispatcherServlet с именем «onBoardingUI», но ваши теги отображения сервлета действительно ищут сервлет с именем «sample».

не должно быть отображение сервлета:

<servlet>
    <servlet-name>onBoardingUI</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>onBoardingUI</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>onBoardingUI</servlet-name>
    <url-pattern>*.form</url-pattern>
</servlet-mapping>
0 голосов
/ 10 февраля 2010

Как только вы начнете определять URL-сопоставления, вам нужно будет сообщить Spring mvc, как обрабатывать любые URL-адреса, которые не были специально сопоставлены. Попробуйте добавить следующее сопоставление:

/*=urlFilenameViewController

и следующий компонент для обработки этих запросов:

<bean id="urlFilenameViewController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController" />

UrlFilenameViewController будет передавать URI непосредственно в преобразователь представления. например example.com/index.html будет сопоставлен с WEB-INF / jsp / index .jsp

Если вам нужно использовать полный путь URI (например, example.com/help/index.html сопоставляется с WEB-INF / jsp / help / index . JSP)
затем установите свойство AlwaysUseFullPath для сопоставления URL

<property name="alwaysUseFullPath" value="true" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...