我目前正在使用 Apache Tapestry 5.3.6 进行一些项目。我在使用 t:loop 组件时遇到问题。有什么方法可以在循环完成并呈现页面后获取所选项目?我需要实现的是:假设我有这样的循环:
<t:loop t:source="itemList" t:value="item">
<t:actionlink id="something" context="item.ID"></t:actionlink>
</t:loop>
这将正常工作。但是,如果我将此操作链接移动到我自己的组件中,并通过我的参数传递此 ID,如果我单击,我总是会从列表中获取最后一项,而不是单击的那一项。
<t:loop t:source="itemList" t:value="item">
<t:mycomponent myparameter="item.ID"></t:mycomponent>
</t:loop>
我尝试输入 formState="iteration",然后输入 ValueEncoder,但没有任何帮助。拜托,谁能帮助我,告诉我如何解决这个问题,并从列表中获取所选项目。提前致谢
编辑:这是我的组件的代码
public class Ocenjivanje
{
@Parameter(required=true)
@Property
private int materijalID;
private Materijal materijal;
@Inject
private Session session;
@SessionState
private User user;
@CommitAfter
public Object unesiOcenu(int ocena)
{
Materijal m = (Materijal)session.createCriteria(Materijal.class).add(Restrictions.eq("materijalID", this.materijalID)).list().get(0);
Date d = new Date();
Ocena o = new Ocena();
o.setMaterijal(m);
o.setKorisnikID(this.user.getID());
o.setDatumOcene(d);
o.setOcena(ocena);
session.save(o);
return this;
}
public void onActionFromJedan()
{
unesiOcenu(1);
}
public void onActionFromDva()
{
unesiOcenu(2);
}
public void onActionFromTri()
{
unesiOcenu(3);
}
public void onActionFromCetiri()
{
unesiOcenu(4);
}
public void onActionFromPet()
{
unesiOcenu(5);
}
}
<t:container
xmlns="http://www.w3.org/1999/xhtml"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
xmlns:p="tapestry:parameter">
Oceni sadržaj:
<t:actionlink t:id="jedan">1</t:actionlink>
<t:actionlink t:id="dva">2</t:actionlink>
<t:actionlink t:id="tri">3</t:actionlink>
<t:actionlink t:id="cetiri">4</t:actionlink>
<t:actionlink t:id="pet">5</t:actionlink>