- さやべえ
- 常連さん
- 会議室デビュー日: 2003/03/13
- 投稿数: 33
|
投稿日時: 2003-12-17 19:19
さやべえです。
StrutsのTilesでの質問です。通常の使い方だと
| コード: |
| <tiles:insert page="/WEB-INF/layouts/1.jsp" flush="true">
<tiles:put name="hoge1" value="/WEB-INF/tiles/hoge1.jsp">
<tiles:put name="hoge2" value="/WEB-INF/tiles/hoge2.jsp"/>
</tiles:insert>
|
のように1:1の関係になると思いますが、これを入れ子にすることは
できないのか?と悩んでおります。
| コード: |
| <tiles:insert page="/WEB-INF/layouts/1.jsp" flush="true">
<tiles:put name="hoge1" value="/WEB-INF/layouts/2.jsp">
<tiles:put name="child1" value="/WEB-INF/tiles/child1.jsp"/>
<tiles:put name="child2" value="/WEB-INF/tiles/child2.jsp"/>
</tiles:put>
<tiles:put name="hoge2" value="/WEB-INF/tiles/hoge2.jsp"/>
</tiles:insert>
|
↑もちろんこれは動きません(イメージをつかむためにわざと掲載しました)
概念的には、親レイアウトの1つのinsert枠に通常はタイルを割り当てるところを
子レイアウトを割り当て、子レイアウトのinsert枠に子用のタイルを割り当てる
ことをしたいと考えております。
なにか情報のお持ちの方、ご教授頂ければ幸いです。
|
- でくのぼう
- 大ベテラン
- 会議室デビュー日: 2003/10/06
- 投稿数: 162
|
投稿日時: 2003-12-17 19:57
definition を作っておいてこれを insert してみては?
// 確か出来たはずですけど、ちょっと自信ない・・・。
|
- さやべえ
- 常連さん
- 会議室デビュー日: 2003/03/13
- 投稿数: 33
|
投稿日時: 2003-12-18 12:31
さやべえです。
| コード: |
|
<%@ include file="/WEB-INF/layouts/definition/LC001.jsp" %>
<tiles:insert page="/WEB-INF/layouts/parent/LP008.jsp" flush="true">
<tiles:put name="title" type="String">メンバー登録</tiles:put>
<tiles:put name="H10" beanName="child.LC001">
<tiles:put name="H004" value="/WEB-INF/tiles/header/H1305.jsp"/>
</tiles:put>
<tiles:put name="C44" value="/WEB-INF/tiles/contents/C5500.jsp"/>
</tiles:insert>
|
definitionを使ってそれをH10にセットすることはできました。
但し、上記のように記述してもdefinitionのH004のinsertエリアがH1305.jspに
変わりませんでした。
後もう少しなのですが・・ どなたか解決方法がわかる方がいらっしゃいましたら
ご教授頂ければ幸いです。
|
- さやべえ
- 常連さん
- 会議室デビュー日: 2003/03/13
- 投稿数: 33
|
投稿日時: 2003-12-18 18:15
こんばんわ。さやべえです。解決しました。
WEB-INF/tiles-defs.xmlにおいて
| コード: |
|
<definition name="child.LC001" path="/WEB-INF/layouts/child/LC001.jsp">
<put name="H001" value="/WEB-INF/tiles/header/H1000.jsp" />
<put name="H002" value="/WEB-INF/tiles/header/H1100.jsp" />
<put name="H003" value="/WEB-INF/tiles/header/H1200.jsp" />
<put name="H004" value="/WEB-INF/tiles/header/H1300.jsp" />
</definition>
|
のように定義しておきます。
そして、JSP内では
| コード: |
|
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
<%--Definitionの継承--%>
<tiles:definition id="child.LC001.ext" extends="child.LC001">
<tiles:put name="H004" value="/WEB-INF/tiles/header/H1305.jsp"/>
</tiles:definition>
<tiles:insert page="/WEB-INF/layouts/parent/LP001.jsp" flush="true">
<tiles:put name="title" type="String">タイトル</tiles:put>
<tiles:put name="H10" beanName="child.LC001.ext" />
<tiles:put name="C44" value="/WEB-INF/tiles/contents/C001.jsp" />
<tiles:put name="F50" value="/WEB-INF/tiles/footer/F001.jsp" />
</tiles:insert>
|
このようにすることで、うまくいきました。
取り急ぎ
|