Spring MVC下拉列表保留基于表单操作的值

时间:2017-11-20 08:27:50

标签: spring select model-view-controller conditional jstl

我有一个JSP页面,在Spring MVC应用程序中有很少的提交按钮。它有几个下拉框,我需要保留应用程序预定义的值(例如,' getInfo'),只需点击几次提交按钮(' btnSelectAll',' btnUnselectAll') ,并且需要保留用户选择的值(除了' getInfo')以进行其他几个提交按钮点击(' defaultAction',' btnReset')。

创建了一个(隐藏的,模式分布)变量' 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逻辑,以验证迭代值等于&#39; getInfo&#39;并与buttonClicked变量一起使用以获得解决方案。但是,由于某些原因,我无法在JSTL foreach中使用buttonClicked值进行条件操作。

有人可以指出我做错了什么。或者,如果有其他更好的解决方案或链接,请分享。

我花了很多时间,先谢谢。

谢谢你, 拉梅什

1 个答案:

答案 0 :(得分:-1)

你可以使用javascript实现这一目标。您可以将buttonClicked的值分配给javascript变量,并根据条件在下拉列表中设置值

<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>