我对此有点新意,请耐心等待。 我有一个来自db的值,需要在下拉列表中设置当前选择的值。这会作为请求参数传递给前端。我尝试将select =“parameter”属性与select标签一起使用,但似乎没有用。我也尝试过value =“”,没有结果。 任何帮助表示赞赏。谢谢
答案 0 :(得分:10)
如果您想在<select>
中使用选定值为jsp提供服务,请将selected
属性放入相应的option
。
<select id="dropdown">
<option value="1">option 1</option>
<option value="2" selected>option 2</option>
<option value="3">option 3</option>
</select>
使用JSTL标记<c:if>
来测试请求参数和当前值之间的相等性。例如,使用名为selectValue
的请求参数:
<option
<c:if test='${param.selectValue == currentOption}'> selected </c:if>
>
</option
请查看以下问题以获取详细信息:Selected item populating in Select tag using JSTL?
要详细说明此事,如果您正在构建选项(<c:forEach>
),则在循环选项时,在当前{{1} selected
中输出<option>
}}的值等于请求参数(未经测试的代码):
<option>
如果选项是静态的,您可以在每个<select id="dropdown">
<c:forEach var="item" items="${list}">
<option value="<c:out value='${item}' />"
<c:if test="${param.selectValue == item})"> selected </c:if> >
<c:out value="${item}" />
</option>
</c:forEach>
</select>
中添加类似的内容(未经测试的代码):
<option>
如果您想通过javascript设置所选值,请使用例如
<option value="1"
<c:if test="${param.selectValue == 1})"> selected </c:if> >
option 1
</option>
<option value="2"
<c:if test="${param.selectValue == 2})"> selected </c:if> >
option 2
</option>
答案 1 :(得分:6)
到目前为止,只要提交的值与所选值匹配,您就需要设置selected
属性 。最干净的是在EL中使用条件运算符?:
,因为使用JSTL <c:if>
最终会出现笨拙和难以阅读的代码。
以下是一个例子:
<select name="foo">
<option value="1" ${param.foo == '1' ? 'selected' : ''}>One</option>
<option value="2" ${param.foo == '2' ? 'selected' : ''}>Two</option>
<option value="3" ${param.foo == '3' ? 'selected' : ''}>Three</option>
</select>
请注意foo
中的${param.foo}
必须与<select name="foo">
的名称完全匹配。另请注意,${param.foo}
值必须与<option value>
的值完全匹配。其他答案中建议的id
的使用与此无关。它仅与客户端相关。 ID根本不用作请求参数名称或值。
答案 2 :(得分:0)
您可以使用javascript和jquery解决此问题。 呈现页面后,您只需更新选择框并设置参数中提供的值即可。 请参见以下jsp / jquery示例:
<select id="dropdown">
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="3">option 3</option>
</select>
<script type="text/javascript">
$(document).ready(function() {
// set select options with jquery and EL
$("#dropdown").val("${param.foo}");
});
</script>
在JSF / Facelets页面中,您可以使用此EL语法(将$ {}替换为#{})
$("#dropdown").val("#{param.foo}");