2011-03-29 2 views
0

아래 코드에서 testDataHashMap입니다. 확인란을 spring:bind 태그로 바인딩하려고합니다. 봄에 구문 오류가 발생합니다. bind. 내 코드에서 문제가 무엇인지 말해 줄 수 있습니까?봄 : 확인란과 바인딩

<c:forEach items="${testData}" var="test" varStatus="loopStatus"> 
    <spring:bind path="${testData[${loopStatus.index}]}.selected"> 
     <input type="hidden" name="_${status.expression}"> 
     <input type="checkbox" name="${status.expression}" value="true"> 
      <c:if test="${status.value}">checked</c:if> 
    </spring:bind> 
    </c:forEach> 

답변

0

spring : bind 태그의 경로가 잘못되었을 수 있습니다. 바인딩하려는 객체를 설명하지 않았으므로 올바른 경로를 말할 수는 없습니다.

스프링 바인드 대신 form:checkbox 태그를 사용할 수 있습니다.

가 가
<spring:bind path="${testData[loopStatus.index]}.selected"> 
+0

@skaffman : testData는 여기에서 typeHashMap의 개체이며, 명령 이름은 search입니다. – rajputhch

2

난 당신이 다른 구문 오류가 있지만이 변경하여 시작하면 잘 모르겠어요 . 중첩 할 필요가 없으므로 ${testData[${loopStatus.index}]}은 구문 오류이며 .selected은 표현식 외부에 있으므로 ${testData[loopStatus.index].selected}이어야합니다.

이제 forEachvar 속성이 현재 항목을 보유하는 변수의 이름을 결정합니다. 그래서 당신은 거의 varStatus을 사용할 필요가 없습니다. 너는 ${test.selected}로 너의 시험을 다만있을 수 있는다.

마지막으로 사용자의 checked 속성이 확인란 입력 요소 밖에 있습니다!

그래서 :

<c:forEach items="${testData}" var="test"> 
    <spring:bind path="${test.selected}"> 
     <input type="hidden" name="_${status.expression}"> 
     <input type="checkbox" name="${status.expression}" value="true" <c:if test="${status.value}">checked</c:if>> 
    </spring:bind> 
</c:forEach> 

는 (확실하지 당신은 이제까지 우리는 우리의 체크 박스 중 하나를 사용하지 않는, 숨겨진 필드가 필요합니다).

0

당신의 표현과 }가 종료 먼저, 표현 언어에서, ${이 시작

<spring:bind path="${testData[${loopStatus.index}]}.selected"> 

을 위해 :