我知道周围有一些这样的问题,但我不认为他们回答了我的问题。
我想允许我的应用程序的管理员用户更改组件及其在特定页面上的顺序。因此,例如:
页面A将包含组件1、2、3页面B将包含组件4、3、2
我并不是试图在页面加载之后修改它,而是在加载之前(页面所需的结构可以例如从数据库中读取)。
这是否违反了Tapestry的静态结构?有可能做到这一点吗?
发布于 2012-11-08 06:06:05
您可以使用块和委托组件来实现这一点。
显然,您需要处理get...Block方法的逻辑,但您应该能够弄清楚一些事情。
本例中的静态结构指的是您的标记需要声明可能呈现的所有嵌入式组件。然后,您可以使用逻辑和其他组件来决定以哪种顺序呈现哪些内容。
java:
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" />
</...>https://stackoverflow.com/questions/13155925
复制相似问题