SimpleFormController的默认formView?

时间:2010-07-20 04:33:09

标签: spring-mvc

首先,我想说我是Spring的新手(特别是MVC框架),只是想了解一切是如何运作的,所以请放轻松我。

我正在玩一个我创建的虚拟应用程序,我创建了一个简单的登录表单,用户可以通过/login.html bean访问。 bean的定义如下:

<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类是一个简单的对象,包含带有适当的getter和setter的用户名和密码字段。)

LoginController类目前几乎没有任何作用:

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

现在我的bean定义文件中有一个视图解析器,如下所示:

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

为了支持我的登录表单,我的jsp目录中有一个login.jsp文件。

我的问题如下:为什么访问/login.html会将我重定向到login.jsp?我没有为表单指定formView属性,那么视图解析器如何知道将我重定向到login.jsp?

提前感谢您的帮助!

约瑟夫。

1 个答案:

答案 0 :(得分:2)

当您未指定逻辑视图名称时,Spring依赖DefaultRequestToViewNameTranslator,默认情况下安装 。因此,如果您的请求类似于

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

您是否见过&lt; LOGICAL_NAME_EXTRACTED_BY_VIEW_NAME_TRANSLATOR&gt; ???因此,如果您的请求是

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

ViewNameTranslator提取的逻辑名称为登录,提供给viewResolver并转换为

/jsp/login.jsp

没有别的