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