我遇到一个奇怪的问题,当我试图在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);
好像有些编码/解码问题?
修改
我将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>
答案 0 :(得分:2)
这仅仅意味着您的资源包(存储所有翻译的属性文件)没有关键字Male和Female的条目。
如果您不想翻译男性和女性,那么您不应该使用<fmt:message key="${gd.value}" />
,因为这是其唯一目的。只需使用${gd.value}
。
请注意,我也很难理解为什么你使用c:choose,因为这两种情况下的代码是相同的。