【问题标题】:Struts html tag inside <script><script> 中的 Struts html 标签
【发布时间】:2013-10-01 03:34:08
【问题描述】:

我知道这是一个非常菜鸟和愚蠢的问题,但我需要帮助。尝试了几个主题,但没有一个有效。

所以我试图将在 Struts2(java) 中创建的列表传递给 javascript 以使用突出显示绘制图表。我已经阅读了几篇文章并提出了这个:

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

但是它永远不会起作用,并且总是以:静态属性必须是字符串字面量,指定表达式是非法的。

如果我尝试:

list = '<s:property value="listFromJava"/>

然后它只返回引用。

感谢任何建议。提前致谢。

【问题讨论】:

    标签: javascript html jsp struts2 ognl


    【解决方案1】:

    为了避免在谷歌搜索时混淆:

    &lt;c:forEach is JSTL

    ${listFromJava} is EL

    &lt;s:property is STRUTS2 UI TAG

    listFromJava (or %{listFromJava}") is OGNL

    替换 JSTL 的 forEach is &lt;s:iterator&gt; 的 Struts2 标记。

    您的函数可以像这样在纯 Struts2 中重写:

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

    要防止最后一个元素出现不想要的逗号,请使用&lt;s:if&gt;

    $(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>
        ];
    });
    

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

    【讨论】:

    • 感谢@Andrea Ligios,但不知道为什么 struts UI 标签 似乎不可读。我最终得到这样的东西: var length = ('');它有效,但问题是我必须通过硬编码获取列表中的每个元素,例如: var aValue = ('') 我试过这个: var aValue[i] = ('') 但没有运气。任何的想法?再次感谢您的回复。
    • 1) SO 编辑器和 Eclipse JSP 编辑器还不够先进,无法正确解释和着色 OGNL 语法:它似乎错了,但它绝对是正确的;跨度>
    • 2) 您不能将 javascript 变量(评估客户端)与 Struts 标记(评估服务器端,然后之前)混合。您是否尝试过我发布的解决方案?看源码,应该是你需要的。或者,您可以手动指定索引:&lt;s:property value="listFromJava[%{#stat.index}].attribute"/&gt;
    • 非常感谢。它确实有效,是的,编辑器无法识别代码:)
    猜你喜欢
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多