首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Spring中定义的Tiles ViewPreparer未被Tiles找到

在Spring中定义的Tiles ViewPreparer未被Tiles找到
EN

Stack Overflow用户
提问于 2011-03-04 20:23:03
回答 1查看 3.5K关注 0票数 2

编辑:我相信是SpringBeanPreparerFactory属性的tilesConfigurer负责确保制片者可用的瓷砖.但它似乎不起作用。tilesConfigurer的缺省值是"BasicPreparerFactory",我在服务器日志中看到了对该属性的引用,我在想,不知怎么的,该属性的设置不正确,它使用的是默认的BasicPreparerFactor。

我完全搞不懂这个.如有任何意见或建议,将不胜感激。

我只是尝试使用在我的Spring配置中定义的Tiles ViewPreparer .就这样!但是无论出于什么原因,我的ViewPreparer的“执行”方法从来没有被调用过。ViewPreparer正在由Spring构建,而我的瓷砖正在呈现,但是预付费者从不执行。就像瓷砖和春天之间有一个断裂的联系应该在那里..。我说我在tiles.xml中使用“tiles.xml”,这是一个在"applicationContext.xml“中定义的bean,但是tiles的行为就像我根本没有定义预付费器一样。这里很好地描述了我想要做的事情。

/WEB/tiles.xml:

代码语言:javascript
复制
<tiles-definitions>

  <definition name="test.tile" template="testtile.jsp" preparer="testPreparer">
  </definition>

</tiles-definitions> 

applicationContext.xml

代码语言:javascript
复制
  <bean id="tilesConfigurer"
    class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
    <property name="definitions">
      <list>
        <value>/WEB-INF/tiles.xml</value>
      </list>
    </property>
    <property name="preparerFactoryClass"
      value="org.springframework.web.servlet.view.tiles2.SpringBeanPreparerFactory" />
  </bean>

  <bean id="testPreparer" class="TestPreparer"></bean>

TestPreparer.java

代码语言:javascript
复制
import org.apache.tiles.AttributeContext;
import org.apache.tiles.context.TilesRequestContext;
import org.apache.tiles.preparer.PreparerException;
import org.apache.tiles.preparer.ViewPreparer;


public class TestPreparer implements ViewPreparer {

    public void execute(TilesRequestContext arg0, AttributeContext arg1)
            throws PreparerException {
        System.out.println("I executed");

    }

}

struts.xml:

代码语言:javascript
复制
  <package name="apps-default" extends="struts-default"
    abstract="true">
    <result-types>
      <result-type name="tiles"
        class="org.apache.struts2.views.tiles.TilesResult" />
      </result-types>
    <interceptors>
      ...
    </interceptors>

   <default-interceptor-ref name="defaultAppStack"/>

  <package name="testPackage" extends="apps-default" namespace="/test">
    <action name="create" class="testAction" method="create">
      <result type="tiles">test.tile</result>
    </action>
  </package>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-04 20:57:57

好了问题解决了。事实证明,这是因为我的web.xml中有以下条目:

代码语言:javascript
复制
<listener>
    <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
</listener>

无论出于什么原因,这实际上是破坏/干扰了我在applicationContext.xml中定义的内容。我需要做更多的调查来找出冲突到底是什么,但不用说,删除这个条目解决了这个问题。

抱歉,我花了两天时间想办法解决这个问题,我想写我的问题能帮我想清楚。哦,好吧,至少这会被记录在这里的S.O.,以防其他任何人遇到同样的问题!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5198859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档