2011-09-22 6 views
3

스프링 응용 프로그램 2.5를 사용하고 있습니다. jsp의 객체 목록을 사용하여 표시되는 라디오 버튼 목록이 있습니다. 나는 QuestionGroupDetails 클래스의 'choosenAnswers'변수에 라디오 버튼의 경로 변수를 설정할 수 있습니다 어떻게 각각의jsp 형태로 라디오 버튼의 경로를 설정하십시오.

objects in the list. 
<form:form commandName = "artifact" name="formradioquest"> 
    <c:forEach var="questionArtifact" items="${artifact.questionGroupDetails}"> 
     <c:forEach var="answerOption" items="${questionArtifact.question.answerOptions}"> 
      <form:radiobutton path="choosenAnswers" value="${answerOption}" label="${answerOption.answerText}" cssClass="styled"/> 
     </c:forEach> 
    </c:forEach> 
    . 
. 
</form:form> 
    public class Artifact{ 
     List<questionGroupDetails> questionGroupDetails; 
     . 
     . 
    } 
    public class questionGroupDetails{ 
     Question question; 
     AnswerOption choosenAnswers; 
     . 
     . 

    } 
    public class Question{ 
     List<AnswerOption> answerOptions; 
     . 
     . 

    } 

에 라디오 버튼의 경로를 설정합니다. 이 코드를 사용하면 Artifact에서 'choosenAnswers'변수가 실제로 필요하기 때문입니다. 도와주세요.

답변

2

태그의 varStatus 속성을 사용하여 현재 루프 색인을 얻을 수 있습니다.

<c:forEach var="questionArtifact" items="${artifact.questionGroupDetails}" varStatus="row"> 
    <c:forEach var="answerOption" items="${questionArtifact.question.answerOptions}"> 
    <form:radiobutton path="choosenAnswers[${row.index}]" value="${answerOption}" label="${answerOption.answerText}" cssClass="styled"/> 
    </c:forEach> 
</c:forEach> 

path 속성은 choosenAnswers.get(row.getIndex())으로 해석됩니다.

+0

그러나 이것은 다시 choosenAnswers가 내 명령 개체 인 이슈 개체에 있다고 가정합니다. 각각의 'questionArtifact'객체의 'chossenAnswers'를 선택하여 양식이 제출 될 때 컨트롤러의 artifact.questionArtifact [0] .getChoosenAnswers()에 액세스합니다. –

+0

위의 답변을 테스트하려면 Artifact 클래스에 choosenAnswers 목록을 추가했습니다. ,하지만 나는 그다지 원하지 않는다. 위의 대답은 bean 클래스 [Artifact]의 'Invalid property'choosenAnswers [0] '을 말합니다. 인덱스 된 속성 경로'choosenAnswers [0] '에서 참조 된 속성에서 인덱싱 된 값에 액세스 할 수 없습니다 : null을 반환했습니다' –

+0

안녕하세요 - richie - nal , 나는이 문제를 해결했다. 사실 당신은 나에게이 감사를 해결하기위한 초기 추진력을 주었다. –

관련 문제