如何将Map的密钥放在JSP </select>的<select>中

时间:2012-05-02 14:20:54

标签: java jsp servlets map jstl

我有下一个问题。在JSP中,我写了下一个

<select name='subject'>
    <c:forEach items="${subjects.keySet()}" var="subjectID">                  
        <option>${subjects.get(subjectID).getName()}</option>                    
    </c:forEach>
</select> 

我从Map获得了值。但我不知道如何获得servlet选择主题的关键

我试图这样做

String subjectID = request.getParameter("subjectID");

由于

我试着去做 但

<select name='subject'>                
                <c:forEach var="subject" items="${subjects}">
                    <option id="${subject.key}" value="${subject.value.getName()}">
                        ${subject.value.getName()}
                    </option> 
                </c:forEach>
            </select>

jsp出错:属性id

的值不正确

我需要在jsp上显示名称主题。但是在servlet上获取ID主题

3 个答案:

答案 0 :(得分:3)

<select name='subject'>    
    <c:forEach items="${yourMap}" var="yourEntry">
        <option>${yourEntry.key}</option>
    </c:forEach>
</select>

或者,如果您想访问密钥的属性。

<select name='subject'>    
    <c:forEach items="${yourMap}" var="yourEntry">
        <option>${yourEntry.key.theProperty}</option>
    </c:forEach>
</select>

您可以使用.value代替.key访问相关值。

答案 1 :(得分:3)

让我们说,&#34;科目&#34;是你的HashMap

<select name='subject'>  
   <c:forEach var="subject" items="${subjects}">
       <option id="${subject.key}" value="${subject.value.getName()}">${subject.value.getName()}</option>   
   </c:forEach>
</select>

如果您想将Key作为值传递,请更改为value="${subject.key}"。因此,在提交表单时。你的钥匙将被通过。

答案 2 :(得分:1)

<select name='subject'>
    <c:forEach items="${subjects}" var="subject" >                  
        <option value="${subject.key}">
            ${subject.value.getName()}
        </option>                    
    </c:forEach>
</select>

在servlet上我做了下一步

Integer subjectIdByName = Integer.valueOf(request.getParameter("subject"));