Spring3MVC多视图解析器(Jsp和Velocity)

Spring3MVC多视图解析器(Jsp和Velocity),spring,model-view-controller,Spring,Model View Controller,由于一些业务/技术限制,我们应该使用Spring3MVC多视图解析器(JSP和Velocity)。我试图在网上搜索这个问题,但我找不到完美的解决方案。可能是其他人也经历过同样的情况。因此,您能告诉我在Spring3MVC应用程序中是否可以同时使用JSP和Velocity作为vew解析器 非常感谢所有帮助。是的,可以配置多个视图解析程序,只需确保订购的Velocity高于基于JSP的视图解析程序: <bean id="viewResolver" class="org.springframew

由于一些业务/技术限制,我们应该使用Spring3MVC多视图解析器(JSP和Velocity)。我试图在网上搜索这个问题,但我找不到完美的解决方案。可能是其他人也经历过同样的情况。因此,您能告诉我在Spring3MVC应用程序中是否可以同时使用JSP和Velocity作为vew解析器


非常感谢所有帮助。

是的,可以配置多个视图解析程序,只需确保订购的Velocity高于基于JSP的视图解析程序:

<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver" p:order="0">
  ...
</bean


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

...

Spring支持多视图解析器。通过向应用程序上下文添加多个冲突解决程序并使用order属性指定顺序,可以链接视图冲突解决程序

您可以使用以下jsp和velocity链接:

    <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"/>
      <property name="order" value="2" />
    </bean>

<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
  <property name="resourceLoaderPath" value="/WEB-INF/velocity/"/>
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
  <property name="cache" value="true"/>
  <property name="prefix" value=""/>
  <property name="suffix" value=".vm"/>
  <property name="order" value="1" />
</bean>


了解有关视图链接的更多信息

您可以使用多个视图解析程序,但上述方法不起作用,原因是,由于基于JSP的ViewResolver具有更高的优先级,它将首先被选中,而基于JSP的ViewResolver的问题是,它是对RequestDispatcher的调用,它将永远不会返回空视图,以便dispatcher尝试不同的视图解析器。在我的回答中,基于JSP的视图解析器是最后一个,这一点很关键。非常感谢Biju Kunjummen和Avinash T的详细解释。该代码示例还有一个问题:id为“viewResolver”的多个bean。否则,这是使用视图解析程序链接的正确方法。