Значение по умолчанию formView для SimpleFormController?

Во-первых я хотел бы сказать, что я довольно плохо знаком с 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 класс является простым объектом, содержащим поле имени пользователя и пароля с соответствующими методами считывания и методами set).

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>

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

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

Заранее спасибо за любую справку!

Joseph.

1
задан Joseph Paterson 20 July 2010 в 04:33
поделиться

1 ответ

Если вы не укажете имя логического представления, 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, будет логин , которое предоставляется для viewResolver и переведено в

/jsp/login.jsp

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

2
ответ дан 2 September 2019 в 22:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: