代码之家  ›  专栏  ›  技术社区  ›  dnul

在spring3.0中同时支持jsp和jspx

  •  3
  • dnul  · 技术社区  · 12 年前

    我已经建立了一个roo应用程序。roo中内置的默认视图解析器用于jspx文件。是否也可以支持jsp文件?。我尝试配置两个viewResolver,但似乎没有urlBasedViewResolver可以共存,无论是其中之一还是另一个。

    改变顺序不会影响行为。如果我将order=1设置为jspx,那么如果我搜索任何.jsp文件,它会给我404。如果我搜索jspx也是如此,但jspviewResolver设置为order=1。

    有没有办法这样做?谢谢

    这是我的webmvc-config.xml

    <bean id="viewResolver"
            class="org.springframework.web.servlet.view.UrlBasedViewResolver">
            <property name="order" value="1"/>
            <property name="viewClass"
                value="org.springframework.web.servlet.view.JstlView" />
            <property name="prefix" value="/WEB-INF/views/" />
            <property name="suffix" value=".jspx" />
        </bean>
        <bean id="jspViewResolver"
            class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                    <property name="order" value="2"/>
            <property name="viewClass"
                value="org.springframework.web.servlet.view.JstlView" />
            <property name="prefix" value="/WEB-INF/views/" />
            <property name="suffix" value=".jsp" />
        </bean>
    
    1 回复  |  直到 12 年前
        1
  •  7
  •   Biju Kunjummen    12 年前

    我能想到的一个可能不是很好的解决方案是不提供后缀,并在返回视图名称时显式指定.jsp或.jspx后缀。

    <bean id="jspViewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <property name="order" value="2"/>
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value="" />
    </bean>
    

    并且当返回视图名称时:

    return "myview.jsp";
    return "myview.jspx";
    

    或者

    如果您知道jsp和jspx视图名称的名称模式,另一个解决方案是将视图名称作为一个参数提供给其中一个解析器:

    <bean id="jspViewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <property name="order" value="2"/>
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value="jsp" />
        <property name="viewNames">
            <list>
        <value>view1*</view>
        <value>view2*</view>
        <value>view3*</view>
        </list>
        </property>
    </bean>
    

    如果这个视图解析程序返回一个null,如果它与任何视图模式都不匹配,那么它将转到您的jspx视图解析程序。