Java Tapestry5:循环,表达式中的访问值

Java Tapestry5:循环,表达式中的访问值,java,loops,tapestry,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:

我尝试使用循环组件,如下所示

<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>

${page.store.loadConcept(${entry.key}).name}
${entry.value}
这里,entry.key是String,entry.value是Long

它在Tapestry中生成异常…“无法将'page.store.loadConcept(${entry.key'转换为组件参数绑定:分析属性表达式'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}
${entry.value}
这很好。当我尝试在表达式中使用entry.key时,会引发异常

我也能使用这样的方法

<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>

${page.store.loadConcept('some id').name}
${entry.value}

这意味着问题不在于method或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>
也可以使用以下方式,但不建议使用:

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

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