2017-11-20 4 views
0

Spring MVC 애플리케이션에 제출 버튼이 거의없는 JSP 페이지가 있습니다. 몇 가지 드롭 다운 상자가 있으며 몇 번의 제출 단추 클릭 ('btnSelectAll', 'btnUnselectAll')에 대해 응용 프로그램 미리 정의 된 값 (예 : 'getInfo')을 유지해야하며 사용자가 선택한 값 ('getInfo') 다른 제출 단추 클릭 ('defaultAction', 'btnReset')에 대해.스프링 MVC 드롭 다운은 폼 액션에 기반한 값을 유지합니다.

사용자가 선택한 버튼 동작의 값을 캡처하는 'buttonClicked'변수 (숨김, 모델 속성)가 생성되었습니다. 예를 들어, 'defaultAction', 'btnReset'및 JSP 페이지에서 사용자가 선택한 버튼 값을 볼 수 있습니다.

<form:select path = "user.action" multiple="false" > 
    <c:forEach items="${actions}" var="role"> 
     <option value="${role}" ${(role eq 'getInfo' and (buttonClicked eq 'defaultAction' or buttonClicked eq 'btnReset')) ? 'selected' : ''}>${role}</option> 
    </c:forEach> 
</form:select> 

라이트 상기 JSTL 로직

는 '된 getInfo'와 동일하고, 솔루션은 buttonClicked 변수와 함께 사용하여 반복 값을 검증한다. 하지만, 어떤 이유로 JSTL foreach 내에서 조건부 연산에 buttonClicked 값을 사용할 수 없습니다.

누군가 내가 잘못하고있는 것을 지적 할 수 있습니까? 또는 다른 더 나은 솔루션이나 링크가 있다면 공유하십시오.

나는 많은 시간을 보내고 있습니다. 미리 감사드립니다.

당신이 사용하는 자바 스크립트를 달성 할 수있는, 라 메쉬

답변

-1

을 주셔서 감사합니다. 자바 스크립트 변수에 buttonClicked의 값을 할당하고 조건에 따라 드롭 다운에서 값을 설정할 수 있습니다.

<form:select path = "user.action" multiple="false" > 
    <c:forEach items="${actions}" var="role"> 
     <option value="${role}">${role}</option> 
    </c:forEach> 
</form:select> 
... 
<script> 
     var buttonClicked = <c:out value="${buttonClicked}"/> 
     var roleObj = document.getElementById('<dropdown id>'); 
     setValue(roleObj,'getInfo'); 
     function setValue(selectObj, valueToSet) { 
     for (var i = 0; i < selectObj.options.length; i++) { 
      if (selectObj.options[i].text== valueToSet 
       && (buttonClicked == 'defaultAction' || buttonClicked == 'btnReset')) { 
      selectObj.options[i].selected = true; 
      return; 
      } 
     } 
     } 
</script>