ior*_*vic 0 loops if-statement tapestry parameter-passing argument-passing
我想动态显示页面链接的可用菜单,具体取决于使用Tapestry登录的用户类型.
我的部分代码Layout.tml如下所示:
<div class="header">
<t:if t:test="userLoggedIn">
<div class="menu">
<ul>
<t:loop t:type="loop" source="pageNames" value="pageName" class="prop:classForPageName">
<t:if t:test="isUserAllowedOnPage('pageName')">
<li>
<t:pagelink page="prop:pageName.name">${pageName.displayName}</t:pagelink>
</li>
</t:if>
</t:loop>
</ul>
</div>
</t:if>
<div style="clear:both;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
在我的Layout.java我有一个以下方法:
public boolean isUserAllowedOnPage(String pageName) {
// My logic here, returns either true or false
}
Run Code Online (Sandbox Code Playgroud)
问题是,我不知道如何实际的网页名称参数传递给isUserAllowedOnPage(String pageName)方法,因为下面的一行tml代码,
"isUserAllowedOnPage('pageName')"
我传递的实际字符串,"pageName"而不是期望的值之一(例如"Index","About","Contacts"...).
你的循环指定value="pageName"哪个意味着tapestry pageName每次迭代循环时都会更新页面中的属性.因此,您不需要将它传递给方法,因为每次调用方法时都已设置它.您可以执行以下操作:
TML
<t:loop source="pageNames" value="pageName">
<t:if t:test="userAllowedOnPage">
...
</t:if>
</t:loop>
Run Code Online (Sandbox Code Playgroud)
Java的
@Property
private List<String> pageNames;
@Property
private String pageName;
...
public boolean isUserAllowedOnPage() {
// some calculation based on pageName
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1344 次 |
| 最近记录: |