2012-12-05 2 views
0

다른 큰 문제가 있습니다. 영역이있는 구성 요소와 영역을 새로 고치는 양식이 있습니다. 루프 내부에 구성 요소를 넣으면 마지막 영역 만 표시됩니다. 각 구역마다 고유 한 ID를 생성했습니다. 페이지 소스에서 모든 영역의 ID가 올바르게 표시되지만 제출시 바로 반환되지는 않습니다. ID로 구역을 반환 할 여지가 있습니까? 사전에태피스 트리, 루프 내부 영역

<details>  
    <summary>Comments</summary><br />   
     <t:zone t:id="commentZone" id="prop:zoneId">     
       <t:commentlist materijalID="materijalID"></t:commentlist><br /> 
    </t:zone>     
    <t:form t:id="komentar" t:context="materijalID" t:zone="prop:zoneId"> 
      <t:textarea t:value="comment" rows="6" cols="40"></t:textarea><br /> 
      <input type="submit" value="Add comment"/> 
    </t:form> 
</details> 
public class Comments 
{ 
    @Parameter(required=true) 
    @Property 
    private int materijalID; 

    @SessionState 
    @Property 
    private User user; 

    @Inject 
    private Session session; 

    @Property 
    private String comment; 

    @InjectComponent 
    private Zone commentZone; 


    @CommitAfter 
    public Object onSuccessFromKomentar(int materijalID) 
    { 
     Komentar k = new Komentar(); 
     Date d = new Date(); 
     Materijal m = (Materijal)session 
       .createCriteria(Materijal.class) 
       .add(Restrictions.eq("materijalID", materijalID)) 
       .list() 
       .get(0); 
     k.setMaterijal(m); 
     k.setKorisnikID(this.user.getID()); 
     k.setDatumUnosa(d); 
     k.setDatumModifikacije(d); 
     k.setKomentar(this.comment); 
     session.save(k); 
     this.comment = ""; 
     return this.commentZone.getBody(); 
    } 

    public String getZoneId() 
    { 
     return "Zone_" + this.materijalID; 
    } 
} 

감사

답변

0

문제가 가장 가능성이 당신이 당신의 commentList에 전달하는 materijalID가로 전달과 동일 함을 될 것입니다 @ : 여기

내 코드입니다 매개 변수. 캡슐화 구성 요소가이 값을 설정한다는 것을 의미합니다. 루프의 경우 렌더링 단계 이후에 항상 가장 마지막 것입니다.

이 솔루션은이 passthough를 분리하는 데 있습니다.

<details>  
    <summary>Comments</summary><br />   
    <t:zone t:id="commentZone" id="prop:zoneId">     
     <t:commentlist materijalID="prop:passThroughMaterijalID"></t:commentlist> 
     <br /> 
    </t:zone>     
    <t:form t:id="komentar" t:context="materijalID" t:zone="prop:zoneId"> 
     <t:textarea t:value="comment" rows="6" cols="40"></t:textarea><br /> 
     <input type="submit" value="Add comment"/> 
    </t:form> 
</details> 
public class Comments 
{ 
    @Parameter(required=true) 
    @Property 
    private int materijalID; 

    @Property 
    private int passThroughMaterijalID; 

    @SessionState 
    @Property 
    private User user; 

    @Inject 
    private Session session; 

    @Property 
    private String comment; 

    @InjectComponent 
    private Zone commentZone; 

    @SetupRender 
    private void setup() { 
     this.passThroughMaterijalID = materijalID; 
    } 


    @CommitAfter 
    public Object onSuccessFromKomentar(int materijalID) 
    { 
     this.passThroughMaterijalID = materijalID; 
     Komentar k = new Komentar(); 
     Date d = new Date(); 
     Materijal m = (Materijal)session 
       .createCriteria(Materijal.class) 
       .add(Restrictions.eq("materijalID", materijalID)) 
       .list() 
       .get(0); 
     k.setMaterijal(m); 
     k.setKorisnikID(this.user.getID()); 
     k.setDatumUnosa(d); 
     k.setDatumModifikacije(d); 
     k.setKomentar(this.comment); 
     session.save(k); 
     this.comment = ""; 
     return this.commentZone.getBody(); 
    } 

    public String getZoneId() 
    { 
      return "Zone_" + this.materijalID; 
    } 
} 
+0

나는 당신이 당신의 코드가? – dodjavola

+0

을 작동하지 않는,이 시도에 응답? – joostschouten

1

당신이 Submitt:defer="false"을 설정하려고 유무 :의 라인을 따라 뭔가?

헤닝 비슷한 질문 here

+0

내 솔루션을 작동하지 않았다 루프를 포함하는 공유하시기 바랍니다 수 :( –

관련 문제