私は現在、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>
これはうまくいきます。しかし、この actionlink を自分のコンポーネントに移動し、この 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>