Java 如何在JSP上的中放置映射键

Java 如何在JSP上的中放置映射键,java,jsp,servlets,map,jstl,Java,Jsp,Servlets,Map,Jstl,我还有一个问题。接下来我用JSP编写了 <select name='subject'> <c:forEach items="${subjects.keySet()}" var="subjectID"> <option>${subjects.get(subjectID).getName()}</option> </c:forEach>

我还有一个问题。接下来我用JSP编写了

<select name='subject'>
    <c:forEach items="${subjects.keySet()}" var="subjectID">                  
        <option>${subjects.get(subjectID).getName()}</option>                    
    </c:forEach>
</select> 
jsp错误:属性id的值不正确

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

<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来访问相关的值。

比如说,subjects是您的HashMap


若要将键作为值传递,则在提交表单时更改为value=${subject.Key}。您的r键将被传递。

将其更改为:value=${subject.value.getName}到value=${subject.value.name}。还有-您的密钥的值和类型是什么?很可能,您希望在键上有一些属性,而不是键。请看下面我的答案。@BrandonV是的,我对Hardik Mishra的答案做了一些修改。但是我没有足够的声誉这就是为什么我不能表现出我的决心
<select name='subject'>
    <c:forEach items="${subjects}" var="subject" >                  
        <option value="${subject.key}">
            ${subject.value.getName()}
        </option>                    
    </c:forEach>
</select>
<select name='subject'>  
   <c:forEach var="subject" items="${subjects}">
       <option id="${subject.key}" value="${subject.value.getName()}">${subject.value.getName()}</option>   
   </c:forEach>
</select>
<select name='subject'>
    <c:forEach items="${subjects}" var="subject" >                  
        <option value="${subject.key}">
            ${subject.value.getName()}
        </option>                    
    </c:forEach>
</select>
Integer subjectIdByName = Integer.valueOf(request.getParameter("subject"));