我有一个这样的模型:
@ModelAttribute("availableFonts")
public Map<String, String> getAllAvaliableFonts() {
...
}
模型包含字体名称作为键,css代码作为值。现在在jsp中我有一个javaScript代码,它应该动态地应用css来预览字体,它看起来更像/更像这样:
var css = '${availableFonts.get("Arial Black")}';
jQuery('#preview').removeClass().addClass(css);
使用硬编码的map.get()可以很好地工作。 Css值取自HashMap,它是我的jsp中的模型。
但我需要这个map键作为javaScript变量,如:
var key = 'Arial Black';
var css = '${availableFonts.get("' + key + '")}';
jQuery('#preview' + i).removeClass().addClass(css);
它没有用。是否可以在javaScript中完成?
答案 0 :(得分:1)
由于JSP在服务器上生成并且JavaScript在客户端上执行,因此无法以您想要的方式执行此操作。您可以做的是将您的模型属性作为JSON,在生成页面时将其分配给JavaScript变量,然后使用此JavaScript变量进行操作。像
这样的东西valueUnbound
答案 1 :(得分:0)
谢谢你的帮助。我做了另一个解决方法 - 我使用map生成带有值的选项列表:
<form:select path="selectedFont" id ="fonts">
<c:forEach var="font" items="${availableFonts}">
<form:option value="${font.value}" label="${font.key}"/>
</c:forEach>
</form:select>
我使用jQuery来使用预览值:
var fontName = jQuery('#fonts>option:selected').text();
var fontClass = jQuery('#fonts').val();
jQuery('#preview' + i).removeClass().addClass(fontClass);
jQuery('#preview' + i).text(fontName);
预览只是一个div:
<div id="preview" />