在Spring MVC中创建自定义视图解析器:属性'url'是必需的

Bla*_*man 5 java spring spring-mvc

我正在尝试创建一个简单的视图解析器,无论您想要什么视图(作为起点),它都会返回hello world.

到目前为止我有这个:

public class MyViewResolver extends AbstractTemplateView {

    @Override
    protected void renderMergedTemplateModel(Map<String, Object> model, HttpServletRequest request,
                                             HttpServletResponse response) throws Exception {

        doRender(model, request, response);
    }

    protected void doRender(Map<String,Object> model, HttpServletRequest request, HttpServletResponse response)
            throws Exception {


        PrintWriter writer = response.getWriter();
        writer.write("hi from my resolver!");

    }


}
Run Code Online (Sandbox Code Playgroud)

现在我收到此错误:

2012-03-29 16:51:28.855:WARN:/:unavailable
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'viewResolver' defined in ServletContext resource [/WEB-INF/application-context.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'url' is required
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
Run Code Online (Sandbox Code Playgroud)

我已经实现了所需的AbstractTemplateView,不确定它要求的url属性是什么?

此外,传递给此viewresolver的视图的名称在哪里?

更新

所以我补充说:

 @Override
    public boolean isUrlRequired() {
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

而现在我只是得到一个错误:

HTTP ERROR 404

Problem accessing /home/index. Reason:

    NOT_FOUND
Run Code Online (Sandbox Code Playgroud)

我的application-context.xml有:

<bean id="viewResolver" class="com.example.MyViewResolver">

</bean>
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Boz*_*zho 7

您(间接)扩展AbstractUrlBasedViewResolver,因此解析视图需要URL是合乎逻辑的.但是,如果在您的情况下不需要,您可以覆盖该isUrlRequired()方法并返回false