我有一个myInitState变量,该变量在控制器中初始化,然后传递给jsp视图。
<script>
myInitFunction({
myInitState: '${myInitState}',
componentName: 'myCompName',
divId: 'divId'
});
</script>
但是,通过使用'${myInitState}'
,在我的Javascript中,我注意到在浏览器中进行调试时会得到一个字符串“ {...}”。
myInitFunction
中重新解析对象?
答案 0 :(得分:0)
为了利用字符串插值,您需要使用反引号
`$ {myInitState}`
然后您将要使用JSON.parse(someString)
答案 1 :(得分:0)
在此处更新答案:
由于误解,我没有考虑以下几点:
-myInitState是<String,Object>
的映射
-地图的值可能已经转义为JSON Blob。
在这种情况下,流程是从服务器到客户端的,因此为了正确地将地图转换为JSON blob,我需要在JSP中执行以下操作:
<script>
var jsonBlob = {
<c:forEach items="${myInitState}" var="state" varStatus="loop">
"${state.key}": ${state.value} ${not loop.last ? ',' : ''}
</c:forEach>
};
</script>
但是,一种更好的方法以及我所采用的方法是只在构造myInitState的控制器本身中进行转换。