FormView по умолчанию для SimpleFormController? - PullRequest
1 голос
/ 20 июля 2010

Во-первых, я хотел бы сказать, что я совсем новичок в Spring (в частности, в среде MVC) и просто пытаюсь понять, как все работает, поэтому, пожалуйста, будьте осторожны со мной.

Я играю вокругс помощью фиктивного приложения, которое я создал, и я создал простую форму входа в систему, к которой пользователи могут получить доступ через компонент /login.html.Определение компонента выглядит следующим образом:

<bean name="/login.html" class="test.controller.LoginController">
    <property name="successView" value="list_messages.html" />
    <property name="commandClass" value="test.domain.Login" />
    <property name="commandName" value="login" />
</bean>

(класс Login представляет собой простой объект, содержащий поле имени пользователя и пароля с соответствующими методами получения и установки).

Класс LoginControllerна данный момент практически ничего не делает:

public class LoginController extends SimpleFormController
{
    @Override
    protected ModelAndView onSubmit(Object command, BindException errors) throws Exception
    {
        return new ModelAndView(new RedirectView(getSuccessView()));
    }
}

Теперь у меня есть один распознаватель представлений в моем файле определения компонента, который выглядит следующим образом:

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

Для поддержки моей формы входа у меня есть логинФайл .jsp в моем каталоге jsp.

Мой вопрос таков: почему доступ к /login.html перенаправляет меня на login.jsp?Я не указал свойство formView для своей формы, так как же распознаватель представлений знает, как перенаправить меня на login.jsp?

Заранее благодарен за любую помощь!

Джозеф.

1 Ответ

2 голосов
/ 20 июля 2010

Если вы не укажете имя логического представления, Spring использует DefaultRequestToViewNameTranslator , который установлен по умолчанию . Так что если ваш запрос что-то вроде

http://127.0.0.1:8080/app/<LOGICAL_NAME_EXTRACTED_BY_VIEW_NAME_TRANSLATOR_GOES_HERE>.html

Вы видели ??? Так что, если ваш запрос

http://127.0.0.1:8080/app/login.html

Логическое имя, извлеченное ViewNameTranslator: login , которое предоставляется ViewResolver и переводится в

/jsp/login.jsp

Ничего другого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...