1

この種の質問がいくつかあることは知っていますが、それらが私の質問に答えているとは思いません。

アプリケーションの管理者ユーザーが、特定のページでコンポーネントとその順序を変更できるようにしたいと考えています。例えば:

ページ A にはコンポーネント 1、2、3 が含まれます ページ B にはコンポーネント 4、3、2 が含まれます

ページがロードされた後ではなく、その前に変更しようとしています(たとえば、ページに必要な構造をデータベースから読み取ることができます)。

これはタペストリーの静的構造に違反していますか? これを達成することは可能ですか?

4

1 に答える 1

1

これは、ブロックとデリゲート コンポーネントを使用して実現できます。

明らかに、メソッドのロジックに取り組む必要がありますが、get...Block何かを理解できるはずです。

この場合の静的構造は、レンダリングされる可能性のあるすべての埋め込みコンポーネントをマークアップで宣言する必要があるという事実を指します。その後、ロジックやその他のコンポーネントを使用して、何をどの順序でレンダリングするかを決定できます。

ジャバ:

public class MyPage
{
    @Inject
    public Block block1;
    @Inject
    public Block block2;
    @Inject
    public Block block3;
    @Inject
    public Block block4;

    public Block getFirstBlock()
    {
        return caseA ? block1 : block4;
    }

    public Block getSecondBlock()
    {
        return caseA ? block2 : block3;
    }

    public Block getThirdBlock()
    {
        return caseA ? block3 : block2;
    }
}

tml:

<...>
    <t:block t:id="block1"><t:component1 /></t:block>
    <t:block t:id="block2"><t:component2 /></t:block>
    <t:block t:id="block3"><t:component3 /></t:block>
    <t:block t:id="block4"><t:component4 /></t:block>

    <t:delegate to="firstBlock" />
    <t:delegate to="secondBlock" />
    <t:delegate to="thirdBlock" />
</...>
于 2012-11-07T22:06:05.453 に答える