用“???”在jsp页面上显示html选择

时间:2015-04-18 13:25:51

标签: jsp jstl

我遇到一个奇怪的问题,当我试图在jsp页面上显示html选择时,值包含在" ???"

???Male???
???Female???

这是jsp页面上的代码

<form:select path="gender" class="form-control" id="gender">
   <c:forEach var="gd" items="${genders}">
      <c:choose>
         <c:when test="${studentEdit.gender==gd.key}">
            <form:option selected="true" value="${gd.key}">
               <fmt:message key="${gd.value}" />
            </form:option>
         </c:when>
         <c:otherwise>
            <form:option value="${gd.key}">
               <fmt:message key="${gd.value}" />
            </form:option>
         </c:otherwise>
      </c:choose>
   </c:forEach>
</form:select>

控制器代码

Map<String, String> genders = new LinkedHashMap<String, String>();
genders.put("M", "Male");
genders.put("F", "Female");
model.addObject("genders", genders);

好像有些编码/解码问题?

修改

感谢@JB Nizet

我将jsp / jstl代码更改为

<c:url value="/Student/Edit" var="editstudenturl"/>
<form:form method="post" action="${editstudenturl}" modelAttribute="studentEdit" class="form-horizontal">
  <form:select path="gender" class="form-control" id="gender" >
    <form:options items="${genders}" />
  </form:select>
</form:form>

1 个答案:

答案 0 :(得分:2)

这仅仅意味着您的资源包(存储所有翻译的属性文件)没有关键字Male和Female的条目。

如果您不想翻译男性和女性,那么您不应该使用<fmt:message key="${gd.value}" />,因为这是其唯一目的。只需使用${gd.value}

请注意,我也很难理解为什么你使用c:choose,因为这两种情况下的代码是相同的。