【发布时间】: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>
【问题讨论】: