【问题标题】:Tiles ViewPreparer defined in Spring not found by TilesTiles 找不到在 Spring 中定义的 Tiles ViewPreparer
【发布时间】:2011-03-04 20:23:03
【问题描述】:

编辑:我相信是 tilesConfigurer 的 SpringBeanPreparerFactory 属性负责确保准备者可用于图块......但似乎它可能无法正常工作。 tileConfigurer 的默认值是“BasicPreparerFactory”,我在服务器日志中看到了对它的引用,我想可能是该属性设置不正确,而是使用默认值 BasicPreparerFactor。 p>

我对这个完全不知所措...任何想法或建议都将不胜感激。

我只是想使用在我的 Spring 配置中定义的 Tiles ViewPreparer ......就是这样!但无论出于何种原因,我的 ViewPreparer 的“执行”方法从未被调用过。 ViewPreparer 正在由 Spring 构建,并且正在渲染我的图块,但准备器从不执行。就好像 Tiles 和 Spring 之间应该存在一个断开的链接......我说我在 tiles.xml 中使用“testPreparer”,这是在“applicationContext.xml”中定义的一个 bean,但瓷砖的行为就像我根本没有定义准备者。 Here's a good description of what I'm essentially trying to do.

/WEB-INF/tiles.xml:

<tiles-definitions>

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

</tiles-definitions> 

applicationContext.xml

  <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

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:

  <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>

【问题讨论】:

    标签: spring tiles


    【解决方案1】:

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

    <listener>
        <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
    </listener>
    

    无论出于何种原因,这基本上破坏/干扰了我在 applicationContext.xml 中定义的内容。我必须做更多调查才能弄清楚到底是什么冲突,但不用说删除该条目解决了问题。

    抱歉,我花了 2 天时间试图解决这个问题,我想在这里写下我的问题有助于我思考。哦,好吧,至少这会在 S.O. 上记录下来。以防其他人遇到同样的问题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      相关资源
      最近更新 更多