我有一个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值进行条件操作。
有人可以指出我做错了什么。或者,如果有其他更好的解决方案或链接,请分享。
我花了很多时间,先谢谢。
谢谢你, 拉梅什
答案 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>