在 jsp 页面上显示 html select,带有“???”
Display html select on jsp page with "???"
我遇到一个奇怪的问题,当我试图在 jsp 页面上显示 html select 时,用“???”包裹的值
???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);
似乎有些 encoding/decoding 问题?
编辑
我将 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>
这只是意味着您的资源包(存储所有翻译的属性文件)没有 Male 和 Female 键的条目。
如果您不想翻译男性和女性,那么您不应该使用 <fmt:message key="${gd.value}" />
,因为这是它的唯一目的。只需使用 ${gd.value}
.
请注意,我也很难理解您为什么使用 c:choose,因为这两种情况下的代码是相同的。
我遇到一个奇怪的问题,当我试图在 jsp 页面上显示 html select 时,用“???”包裹的值
???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);
似乎有些 encoding/decoding 问题?
编辑
我将 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>
这只是意味着您的资源包(存储所有翻译的属性文件)没有 Male 和 Female 键的条目。
如果您不想翻译男性和女性,那么您不应该使用 <fmt:message key="${gd.value}" />
,因为这是它的唯一目的。只需使用 ${gd.value}
.
请注意,我也很难理解您为什么使用 c:choose,因为这两种情况下的代码是相同的。