私は新しいタイルユーザーであり、これまでのところ気に入っています。しかし、私は今問題に直面しており、タイルが私の目的を達成するための適切なツールであるかどうかはわかりません。
私がやりたいのは、複数のサイト間で共有される一般的な登録フォームを作成することです。この登録フォームは、サイトごとに若干異なります。したがって、明らかに、同じjspファイルとjavaコードを使用できます。私の目的は、どの入力フォームフラグメントをフォームに含めるか、どの入力フォームフラグメントを含めないか(サイトごとに)を構成できる.propertiesファイルを作成することです。
属性を動的に挿入する方法はありますか?
ビュー作成者クラスを作成しました。このようにして、既存の属性を追加/上書きできます。
public class TestViewPreparer extends ViewPreparerSupport {
public void execute(TilesRequestContext tilesContext, AttributeContext attributeContext) throws PreparerException {
Attribute attribute = new Attribute("/WEB-INF/views/search-panel/holiday-type.jsp");
attributeContext.putAttribute("rfFragment", attribute);
}
}
ただし、これは一度に1つの属性のみを追加/オーバーライドします。テンプレートファイルに加えて、それぞれに次の行を追加する必要があります。
<tiles:insertAttribute name="rfFragment1" />
<tiles:insertAttribute name="rfFragment2" />
//... etc
私が探しているのは、Attribute
sのリストを追加し、それらをループを使用してテンプレート行に含めるようなものです。どういうわけかこのように:
<tiles:useAttribute id="fragments" name="rfFragments" classname="java.util.List" />
<c:forEach var="fragment" items="${fragments}">
<tiles:insertAttribute value="${fragment}" flush="true" /></c:forEach>
私の問題は、AttributeContext
1つの属性しか取得できず、属性のリストを取得できないことです。または私は何かを逃しましたか?
詳細を踏まえて、問題について十分に説明したと思います。