2012-12-03 4 views
1

현재 Apache Tapestry 5.3.6을 사용하는 프로젝트를 진행 중입니다. t : loop 구성 요소를 사용하여 문제가 있습니다. 루프가 끝나고 선택한 항목을 가져올 수있는 방법이 있습니까? 페이지가 렌더링 되었습니까? 입니다 무엇을 달성해야합니다의 내가 같은 루프 있다고 가정 해 봅시다 :Tapestry, 루프에서 선택한 항목 가져 오기

<t:loop t:source="itemList" t:value="item"> 
    <t:actionlink id="something" context="item.ID"></t:actionlink> 
</t:loop> 

이 잘 작동합니다. 하지만이 액션 링크를 내 구성 요소로 이동하고이 매개 변수를 매개 변수를 통해 전달하면 내가 클릭하면 항상 클릭 한 목록이 아닌 목록에서 마지막 항목을 가져옵니다.

<t:loop t:source="itemList" t:value="item"> 
    <t:mycomponent myparameter="item.ID"></t:mycomponent> 
</t:loop> 

나는 formState = "반복"퍼팅 시도하고 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>   

+0

코드에 이벤트 핸들러를 변경할 나는 문제를 해결, – dodjavola

답변

0

당신이 달성하기 위해 무엇을하려고하는 확실치 않지만 어떤 경우에 당신이 컨텍스트를 사용하지 마십시오 당신의 actionlinks에 전달하고 하드 코드 된 int를 대신 사용하십시오. <t:actionlink t:id="tri" context="materijalID">3</t:actionlink>에 액션 링크를 변경하고 내 구성 요소의

public void onActionFromJedan(int context) 
    { 
      unesiOcenu(context); 
    } 
+0

TNX을 추가 :) – dodjavola

관련 문제