2

私は Tiles を初めて使用し、Spring MVC 3.2.4 で Tiles3 を動作させようとしています。すべてが正しくセットアップ/構成されていると思っていましたが、何も表示されません。org.apache.tiles の DEBUG ログを有効にしようとしましたが、タイルのログに何も表示されません。

私はかなり混乱しています。パスまたは構成に何か問題があるに違いないと思いますが、タイルが何を探しているのか、または何かが見つからない理由を判断するためにタイルのデバッグを開始する最初のアイデアがありません。TilesView のすべてのパブリック メソッドにブレークポイントを設定しようとしましたが、ページにアクセスしようとしても何も呼び出されません。

webmvc-config.xml:

<!-- Tiles page resolver -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.tiles3.TilesViewResolver" >
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView" />
</bean>

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

/WEB-INF/tiles.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 3.0//EN" "http://tiles.apache.org/dtds/tiles-config_3_0.dtd">
<tiles-definitions>
    <definition name="secure/login" template="/WEB-INF/views/tiles/layouts/default.jsp">
            <put-attribute name="body" value="/WEB-INF/views/tiles/secure/login/body.jsp"/>
    </definition>
</tiles-definitions>

そして、ファイル /WEB-INF/views/tiles/layouts/default.jsp と /WEB-INF/views/tiles/secure/login/body.jsp が存在することを確認できます。

ログ出力にエラーメッセージ、または少なくとも何かが表示されることを期待しているので、これを理解し始めることができますが、何も得られません。出力ログに関連するタイルが表示されるのは次のとおりです。

2013-10-25 13:55:05,034 [localhost-startStop-1] INFO  web.servlet.view.tiles3.TilesConfigurer - Found JSP 2.1 ExpressionFactory
2013-10-25 13:55:05,082 [localhost-startStop-1] INFO  org.apache.tiles.access.TilesAccess - Publishing TilesContext for context: org.springframework.web.servlet.view.tiles3.SpringWildcardServletTilesApplicationContext

どこから、どのように始めればよいですか?

私は現在、アプリケーションが Tiles2 で正常に動作しており、Tiles3 にアップグレードしようとしていましたが、うまくいきませんでした。

コントローラーは次のようになります。

SecureController.java

@RequestMapping("/secure/**")
@Controller
public class SecureController {

    @RequestMapping(value = "/login", method = RequestMethod.GET)
    public String login(ModelMap model) {
        return "secure/login";
    }
}

そして、「return secure/login」ステートメントが実行されていることを確認できます。

log4j.xml:

<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>

    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ISO8601} [%t] %-5p %c{5} - %m%n" />
        </layout>
    </appender>

    <!-- Some other loggers here too -->

    <!-- Apache Tiles -->
    <logger name="org.apache.tiles">
        <level value="TRACE" />
    </logger>


    <root>
        <level value="INFO" />
        <appender-ref ref="STDOUT" />
    </root>
</log4j:configuration>

pom.xml スニペット:

    <!-- Apache Tiles -->
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-extras</artifactId>
        <version>3.0.1</version>
    </dependency>

アクセスされている URL: //localhost:8080/myapp/secure/login

4

1 に答える 1

3

問題が見つかりました。他の誰かが問題に遭遇した場合に備えて、この投稿を残してください。InternalResourceViewResolver を設定する構成ファイルの上位の構成を見逃していました。残念ながら、Spring はチェーン内で 1 つの UrlViewResolver または InternalResourceViewResolver しか処理できません。順序設定を指定しないと、Spring は InternalResourceViewResolver (JstlView) を使用しようとして、Tiles ビュー リゾルバーを完全にスキップしていました。

他のビュー リゾルバーを削除し、すべてが期待どおりに動作します。

于 2013-10-25T18:35:48.173 に答える