<script>内的Struts html标记

use*_*803 1 html javascript jsp struts2 ognl

我知道这是一个非常愚蠢的问题,但是我需要帮助。尝试了几个主题,但都无济于事。

因此,我试图将在Struts2(java)中创建的列表传递到javascript中以使用高光绘制图表。我已经阅读了几篇文章,并提出了以下建议:

$(function drawList() {
var list = [
<c:forEach items="${listFromJava}" var="alistFromJava">
{itemName: "${alistFromJava.attribute}"},
</c:forEach>
];
Run Code Online (Sandbox Code Playgroud)

但是,它永远不起作用,并且总是以以下形式结尾:静态属性必须是String文字,指定表达式是非法的。

如果我尝试:

list = '<s:property value="listFromJava"/>
Run Code Online (Sandbox Code Playgroud)

然后它仅返回引用。

任何建议表示赞赏。提前致谢。

And*_*ios 5

为了避免在使用Google搜索时造成混乱,请执行以下操作:

<c:forEachJSTL

${listFromJava}EL

<s:propertySTRUTS2 UI TAG

listFromJava(或%{listFromJava}“)是OGNL

替换JSTL的Struts2标记forEach <s:iterator>

您的函数可以在纯Struts2中重写,如下所示:

$(function drawList() {
    var list = [
        <s:iterator value="listFromJava" >
            {itemName: '<s:property escapeJavascript="true" value="attribute"/>'},
        </s:iterator>
    ];
});
Run Code Online (Sandbox Code Playgroud)

为防止最后一个元素具有不想要的逗号,请使用 <s:if>

$(function drawList() {
    var list = [
        <s:iterator value="listFromJava" status="stat">
            <s:if test="#stat.index>0">,</s:if>
            {itemName: '<s:property escapeJavascript="true" value="attribute"/>'}
        </s:iterator>
    ];
});
Run Code Online (Sandbox Code Playgroud)

编辑:添加了防止javascript注入问题(escapeJavascript="true")所需的转义。