java - Tapestry5 : loop, 访问表达式中的值

标签 java loops tapestry

我正在尝试按如下方式使用循环组件。

<tr t:type="Loop" t:source="summarizer.byAssociationConceptSorted" t:value="entry" >
    <td style="border: 1px solid #EEEEEE; padding: 3px">${page.store.loadConcept(${entry.key}).name}</td>
    <td style="border: 1px solid #EEEEEE; padding: 3px">${entry.value}</td>
</tr>

这里,entry.key是String,entry.value是Long

它在 Tapestry 中生成异常......“无法将 'page.store.loadConcept(${entry.key' 转换为组件参数绑定(bind):解析属性表达式 'page.store.loadConcept(${ Entry.key':无法解析字符位置 25 处的输入。"

如果我这样做,效果很好,

<tr t:type="Loop" t:source="summarizer.byAssociationConceptSorted" t:value="entry" >
    <td style="border: 1px solid #EEEEEE; padding: 3px">${entry.key}</td>
    <td style="border: 1px solid #EEEEEE; padding: 3px">${entry.value}</td>
</tr>

这很好用。当我尝试在表达式中使用entry.key时抛出异常。

我也可以像这样使用 loadConcept 方法,

<tr t:type="Loop" t:source="summarizer.byAssociationConceptSorted" t:value="entry" >
    <td style="border: 1px solid #EEEEEE; padding: 3px">${page.store.loadConcept('some id').name}</td>
    <td style="border: 1px solid #EEEEEE; padding: 3px">${entry.value}</td>
</tr>

这意味着问题不在于方法或entry.key。问题是当您尝试在表达式中使用entry.key 时。我是 Tapestry 的新手,正在尝试学习它,谁能告诉我如何在某些表达式中使用循环值?

最佳答案

您不能在 Tapestry 中的其他表达式中使用表达式。始终建议在 java 类中对此类表达式使用单独的方法,例如:

<tr t:type="Loop" t:source="summarizer.byAssociationConceptSorted" t:value="entry" >
    <td>${entryConcept.name}</td>
    <td>${entry.value}</td>
</tr>

在java类中:

public Concept getEntryConcept() {
    return getPage().getStore().loadConcept(entry.getKey());
}

也可以但不建议使用这样的东西:

<tr t:type="Loop" t:source="summarizer.byAssociationConceptSorted" t:value="entry" >
    <td>${page.store.loadConcept(entry.key).name}</td>
    <td>${entry.value}</td>
</tr>

关于java - Tapestry5 : loop, 访问表达式中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21397913/

相关文章:

java - 如何使用 bufferedreader/writer 在 java 中复制图像

java - java中的日期时区转换?

Java从数据库中检索结果

python - 使用Python中的Turtle模块将缩小的 turtle 向上移动窗口屏幕

java - 可以 :select submit palette values in Tapestry 5. 3.6 吗?

java - 如何获取和使用 JHipster 微服务 JWT 的身份验证 token

c++ - 虽然在 y/n 输入 C++ 后不会开始循环

Perl 调试器 - 如何跳出循环

javascript - Tapestry : Access page/component property in corresponding javascript file

java - Tapestry 中的确认对话框