使用Spring为未受保护的资源设置磁贴

使用Spring为未受保护的资源设置磁贴,spring,spring-mvc,tiles,apache-tiles,Spring,Spring Mvc,Tiles,Apache Tiles,我在现有应用程序中使用spring mvc设置互动程序时遇到问题。这是我的设置信息: 我所有的JSP都在/project/*目录下。我正在尝试访问 JSP(帮助文件等)通过其他JSP中的静态链接(如)。 我没有这些JSP的任何控制器,也不想为此特定用例编写控制器(我已经测试过它与控制器一起工作),因此plz不建议编写控制器。 以下是我的配置: spring-mvc-context.xml条目: <bean id="tilesConfigurer" class="org.sp

我在现有应用程序中使用spring mvc设置互动程序时遇到问题。这是我的设置信息:

  • 我所有的JSP都在/project/*目录下。我正在尝试访问 JSP(帮助文件等)通过其他JSP中的静态链接(如
    )。 我没有这些JSP的任何控制器,也不想为此特定用例编写控制器(我已经测试过它与控制器一起工作),因此plz不建议编写控制器。
以下是我的配置:

spring-mvc-context.xml条目:

<bean id="tilesConfigurer"
      class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/spring/tiles-def.xml</value>
        </list>
    </property>
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">   
     <!-- <property name="prefix" value="/WEB-INF/views/"/> -->
    <property name="suffix" value=".jsp"/> 
</bean>
 <definition name="tilesTest" template="/tilesTest.jsp">
    <put-attribute name="title" value="TITLE for TEST-TILES JSP"/>
    <put-attribute name="leftMenu" value="MY LEFT MENU"/>
    <put-attribute name="body" value="SOME BODY"/>        
</definition>

谢谢

您是否总是需要通过
DispatcherServlet
传递请求,否则tiles视图解析功能将无法工作。让人们直接访问JSP也有点危险,把它们放在
WEB-INF
目录中,然后注册这些视图。接下来,使用
TilesViewResolver
而不是
UrlBasedViewResolver
。我已经为所有请求配置了DispatcherServlet,为了简洁起见,我没有在这里发布它。我知道将JSP放在WEB-INF目录下是一种更好的做法,但正如我所提到的,其中一些是帮助文件等。我知道如果我注册视图控制器,它会起作用,但我的问题是如何在不注册视图控制器的情况下做到这一点。它不会起作用,因为您需要平铺来处理文件,因此,您需要使用
DispatcherServlet
将其委托给
ViewResolver
,或者需要设置磁贴以在
DispatcherServlet
领域之外工作。无论哪种方式,您都需要将请求传递给/通过tiles。在您的情况下,最简单的方法就是让
DispatcherServlet
正确处理它。。。
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
<html>
    <head>Tiles Test Page</head>
    <title><tiles:getAsString name="title"/></title>
    <body>
        <tiles:insertAttribute name="body"/>
    </body>
</html>
root cause
java.lang.NullPointerException
    org.apache.tiles.template.DefaultAttributeResolver.computeAttribute(DefaultAttributeResolver.java:42)
    org.apache.tiles.template.GetAsStringModel.resolveAttribute(GetAsStringModel.java:178)
    org.apache.tiles.template.GetAsStringModel.start(GetAsStringModel.java:95)
    org.apache.tiles.jsp.taglib.GetAsStringTag.doTag(GetAsStringTag.java:306)
    org.apache.jsp.tilesTest_jsp._jspx_meth_tiles_005fgetAsString_005f0(tilesTest_jsp.java:128)
    org.apache.jsp.tilesTest_jsp._jspService(tilesTest_jsp.java:82)