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

DaT*_*omB 2 html jsp

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

Xav*_*ica 10

如果要为jsp中的选定值提供服务<select>,请将该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>
Run Code Online (Sandbox Code Playgroud)

使用JSTL标记<c:if>测试请求参数和当前值之间的相等性.例如,使用名为的请求参数selectValue:

<option 
    <c:if test='${param.selectValue == currentOption}'> selected </c:if>
>
</option
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请查看以下问题:使用JSTL在Select标记中填充所选项目?

为了阐述这个问题,如果你dinamically(构建选项<c:forEach>),而循环播放的选项,输出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>
Run Code Online (Sandbox Code Playgroud)

如果选项是静态的,您可以在每个选项中添加类似的内容<option>(代码未经测试):

  <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>
Run Code Online (Sandbox Code Playgroud)

如果要通过javascript设置所选值,请使用例如

document.getElementById("dropdown").value = <c:out value='${param.selectValue}'/>
Run Code Online (Sandbox Code Playgroud)


Bal*_*usC 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>
Run Code Online (Sandbox Code Playgroud)

请注意,fooin ${param.foo}必须与名称完全匹配 <select name="foo">.另请注意,该${param.foo}值必须与值完全匹配<option value>.id其他答案中建议的用法与此无关.它仅与客户端相关.ID根本不用作请求参数名称或值.