使用请求参数在下拉列表中选择一个选项

时间:2011-10-04 10:29:04

标签: html jsp

我对此有点新意,请耐心等待。 我有一个来自db的值,需要在下拉列表中设置当前选择的值。这会作为请求参数传递给前端。我尝试将select =“parameter”属性与select标签一起使用,但似乎没有用。我也尝试过value =“”,没有结果。 任何帮助表示赞赏。谢谢

3 个答案:

答案 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}");