2010-11-19 12 views
0

ネストされたテンプレートが親テンプレートの前に評価されているという問題があります。注文の問題により、これはネストを主張するタグライブラリの問題を引き起こしています。Apache Tilesでタイル評価の順序を変更するにはどうすればよいですか?

template.jsp

<%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%> 
<%@taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> 
<%@taglib uri="http://taglibs.com/tags" prefix="s"%> 
<%System.out.println("evaluating template.jsp");%> 
<s:outer> 
    <tiles:insertAttribute name="content" /> 
</s:outer> 

はContent.jsp

<%@page language="java" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%> 
<%@taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> 
<%@taglib uri="http://taglibs.com/tags" prefix="s"%> 
<tiles:insertDefinition name="template"> 
    <tiles:putAttribute name="content" /> 
     <%System.out.println("evaluating content.jsp");%> 
     <s:inner /> 
    </tiles:putAttribute> 
</tiles:insertDefinition> 

content.jspページが評価されると、次のように出力されます。 innerタグがouterタグ内になければならないので、

evaluating content.jsp 
evaluating template.jsp 

content.jspページが失敗しています。 template.jspを評価した後、content.jspを評価するにはどうすればよいですか?

答えて

1

私は間違っているかもしれませんが、私はTilesがJSP全体を解析する必要があると思います。つまり、レイアウトされた方法だけではできません。現在のレイアウトは、ターゲットJSPから内部的にテンプレートを使用します。タイルの定義を使用して、テンプレートをコンテンツのターゲットとして指定することができます。私はこのメソッドを使用するとより効率的にタイルの継承を使用できるようになり、 "テンプレート"が最初にレンダリングされるので、この問題が解決される可能性があります。

例:

<tiles-definitions> 
    <definition name="myTemplate" template="/WEB-INF/jsf/template.jsp"> 
     <put-attribute name="content" value="" /> 
    </definition> 
    <definition name="content" extends="myTemplate"> 
     <put-attribute name="content" value="content.jsp" /> 
    </definition> 
</tiles-definitions> 

tiles.xml 今、あなたはあなたの結果の型としてタイル定義のそれぞれで独立し指定する必要があります...あなたはStruts2のを使用している場合、私はあなたを伝えるだろうが、チャンスは、すべてのフレームワークあなたにしていますない。

テンプレートjs​​pは同じように見えます。ページに任意のタイルロジックをミックスする必要が今ありません

<%@taglib uri="http://taglibs.com/tags" prefix="s"%> 
<%System.out.println("evaluating content.jsp");%> 
<s:inner /> 

注: とコンテンツのJSPは次のよ​​うに書き換えることでしょう。内容はちょうどそれです。 tiles.xmlファイルは本当に必要なものよりも複雑ですが、私たちの例では「put属性」は1つのみですが、もっと複雑なページにはたくさんあることがあるので、「myTemplate」が生成することを示したいと思いますページにはコンテンツだけでなく、ヘッダーとフッターとサイドバーが含まれている可能性があります。ヘッダーも含まれているため、スクリプトやCSSをページ上で変更してから、例のように拡張して、ベースレイアウト - >セキュアレイアウトはベースを拡張しますが、おそらくロックアイコンを含むようにヘッダーを変更する - > View_users_in_secure_layoutは、ビューユーザーの機能のコンテンツを変更する安全なレイアウトを拡張します。

+0

私がTilesに持っている問題は、すべてのページコンテンツを1つのJSPページ(HTMLヘッダーコンテンツ、ページ固有のCSS、メニュー、およびコンテンツ)にしたいということです。タイルズは私が望むように動作しないようだ。入力いただきありがとうございます! –

関連する問題