AN示例之前抵达INSANE:
给定的代码太复杂了,所以我创建了一个用于测试目的的bean:
package fr.hbonjour.formulaires.actions;
public class PlaceBean {
private String name;
private String adress;
private Long index;
public PlaceBean()
{
this(null, null, null);
}
public PlaceBean(Long id, String name, String adress)
{
this.setName(name);
this.setAdress(adress);
this.setIndex(id);
}
... (getters and setters)
}
然后我尝试这样的:
<s:bean name="fr.hbonjour.formulaires.actions.PlaceBean" var="bean" />
<s:set var="bean.name" value="places[places[0].index].name" />
<!-- Prompt the name from the created bean -->
<td><s:property value="bean.name"/></td>
地方[0]的.index返回一个值长和地点[地方[0]的.index]。名称的字符串值。这里是我的列表的值:
0 GABRIEL
1 WU
所以地方[地方[0]的.index]。名称=的地方[0]。名称= GABRIEL。的确<s:property />
标签显示GABRIEL
。
更棘手例如:
<s:bean name="fr.hbonjour.formulaires.actions.PlaceBean" var="bean" />
<s:iterator status="stat" value="places">
<tr>
<s:set var="bean.name" value="places[places[#stat.index].index].name" />
<td><s:property value="bean.name"/></td>
</tr>
</s:iterator>
所以...为#stat.index = 0例如,地点[地方[#stat.index]的.index]。名称=地方[地方[0 ] .index] .name = places [0] .name = GABRIEL。此代码返回以下值:
GABRIEL
WU
让我们来检查!
form.datiVersioneQuoteAssegnazione [form.dati.assegnazioniAnnualitaAtto [#qid] .lista [#k.index] .idObj] .confermata
我们看到,如果#k.index
是一个迭代指数和lista[#k.index].idObj
返回一个值长,lista[#k.index].idObj
工作(places[#stat.index].index
在我们的例子中工作)。
Wa看到如果lista[#k.index].idObj
返回一个Long值,datiVersioneQuoteAssegnazione[lista[#k.index].idObj].confermata
工作(places[places[#stat.index].index].name
在我们的例子中工作)。
SO?
我建议你像我在我的例子中一样逐步检查表达式的每个值。因为没有人能够准确地重新制作你的测试用例。也许你应该特别检查form.dati.assegnazioniAnnualitaAtto[#qid]
表达式的一部分。我不怀疑你会设法找到答案。
但无论如何,它是如此丑陋。祝你好运。
为什么你想让任何人看看你的JSP?这是不可维护的。 – 2013-04-22 15:09:17
因为创建这个大项目的人总是这样做,我必须严格遵守他们的编码标准...... – Emaborsa 2013-04-22 15:32:05
你的idObj是什么类型? “form.datiVersioneQuoteAssegnazione”中的关键字是什么? – 2013-04-22 17:10:04