2011-06-24 7 views
1

ストライプのレイアウトに問題が発生しています。ストライプのネストされたレイアウトの問題

メインレイアウト(main.jsp):メイン(sub_main.jsp)を拡張さ

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 

<%@include file="/WEB-INF/jsp/common/taglibs.jsp" %> 

<s:layout-definition>  

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>{$title}</title> 
</head> 
<body> 
    <s:layout-component name="body"/> 
</body> 
</html> 

</s:layout-definition> 

サブレイアウト:今

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 

<%@include file="/WEB-INF/jsp/common/taglibs.jsp" %> 

<s:layout-definition> 
    <s:layout-render name="/WEB-INF/jsp/common/main.jsp" title="${title}"> 
     <s:layout-component name="body"> 
      This is a test and this is from sub main 
      <div style="color: red; font-size: 5em;"> 
       <s:layout-component name="subheader"/> 
      </div> 
      ${body}  
     </s:layout-component> 
    </s:layout-render> 
</s:layout-definition>  

私は私はここでテストケースを提供します次のコード(なtest.jsp)でサブメインのレイアウトを使用して:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 

<%@include file="/WEB-INF/jsp/common/taglibs.jsp" %> 

<s:layout-render name="/WEB-INF/jsp/common/sub_main.jsp" title="Test Page"> 
    <s:layout-component name="subheader"> 
     This is from the sub header component 
    </s:layout-component> 
    <s:layout-component name="body"> 
     This is from body 
    </s:layout-component> 
</s:layout-render> 

しかし、ブラウザに、私は次のことを見ています:

これはテストされ、これは、身体

代わりに由来する
サブ主から、これは:

これはテストであり、これは、サブ主から
これはサブヘッダーコンポーネントからのものです
これはボディからです

上記のすべてのタイトルは、次のように表示されます。

"$ title"

私が間違っていることについてどのような身体が私に手がかりを与えることができますか?

+0

@Keoki Zee、これはStripesフレームワークに特有のものですか? – kaushik

+0

それは?私の謝罪、私はその時のことを思い出します。 –

+0

@Kdeveloper、これについてお知りになりたいですか? – kaushik

答えて

1

私はサブヘッダsub_main.jsp defenitionのコンポーネント内に定義されていることを、私はあなたが巣のようなコンポーネントのタグをことができるとは思わない気づきました。代わりにサブヘッダーのEL式を使用してみてください($ {subheader}を使用してください)。

レイアウトコンポーネントのコンテンツをレンダリングするときにレイアウトコンポーネントタグの代わりに常にEL式を使用し、レイアウトを定義するためにレイアウトコンポーネントのみを使用するのが最善の方法です。レイアウト定義にネストされている間は、レイアウトコンポーネントをレンダリングに使用することはできません(このレイアウトコンポーネントの二重の使用は、ライブラリの設計上の誤りであり、私の意見では不必要な混乱につながります)。

公式のStripesドキュメントのNested Layoutsセクションを参照してください。

+0

私はその記事を読んでそれに応じて変更を加えました。今はタイトルを除いてすべて正常に動作します。そのためのハックはありますか? – kaushik

+0

また、sub_main.jspのレイアウト・レンダリングにタイトルを追加する必要があります。 Kdeveloper

+0

私は編集しましたあなたがアドバイスした通りにファイルを作成します(私はその質問でも編集しました)。いいえ使用! – kaushik

関連する問題