我有一个JSP,这里是片段:
<s:set var="tmpIdObj"
value="form.dati.assegnazioniAnnualitaAtto[#qid].lista[#k.index].idObj"/>
<s:set var="c6"
value="form.datiVersioneQuoteAssegnazione[#tmpIdObj].confermata"/>
我想写一行,避免创建tmpIdObj变量,如下所示:
<s:set var="c6"
value="form.datiVersioneQuoteAssegnazione[form.dati.assegnazioniAnnualitaAtto[#qid].lista[#k.index].idObj].confermata"/>
我试图使用单引号或其他struts sintaxes,但我无法安排它。 我正在寻找工作语法。 感谢
答案 0 :(得分:1)
获得生命之前的一个例子:
给定的代码太复杂了,所以我创建了一个用于测试目的的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>
places [0] .index返回Long值,并将[places [0] .index] .name设置为String值。以下是我的列表的值:
0 GABRIEL
1 WU
所以放置[places [0] .index] .name = places [0] .name = 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例如,places [places [#stat.index] .index] .name = places [places [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
返回Long值,则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]
部分。我不怀疑你会设法找到答案。
但无论如何,这太丑了。祝你好运。
答案 1 :(得分:0)
使用%{}
<s:set var="c6"
value="form.datiVersioneQuoteAssegnazione[%{form.dati.assegnazioniAnnualitaAtto[#qid].lista[#k.index].idObj}].confermata"/>
复制,粘贴,运行并返回此处发布输出:
<div style="border: 5px solid red; width: 100%;">
form.dati.assegnazioniAnnualitaAtto[#qid].lista[#k.index].idObj: [
<s:property value="form.dati.assegnazioniAnnualitaAtto[#qid].lista[#k.index].idObj" />]
form.datiVersioneQuoteAssegnazione[%{form.dati.assegnazioniAnnualitaAtto[#qid].lista[#k.index].idObj}].confermata: [
<s:property value="form.datiVersioneQuoteAssegnazione[%{form.dati.assegnazioniAnnualitaAtto[#qid].lista[#k.index].idObj}].confermata" />]
form.datiVersioneQuoteAssegnazione[form.dati.assegnazioniAnnualitaAtto[%{#qid}].lista[%{#k.index}].idObj].confermata: [
<s:property value="form.datiVersioneQuoteAssegnazione[form.dati.assegnazioniAnnualitaAtto[%{#qid}].lista[%{#k.index}].idObj].confermata" />]
</div>