0

我试图从 Struts 中调用一个 JS 函数:

<s:iterator value="%{foo}" status="stat">
    <a id="idname" href="#" onClick="javascript:getValue('<s:property value="news"/>');    return false;"><s:property value="newsName" /></a>
</s:iterator>

当我这样做时,我得到一个未终止的字符串常量错误。但是,当我使用我拥有的转义值时:

当我使用“新闻”变量的字面值时:

<s:iterator value="%{foo}" status="stat">
  <a id="idname" href="#" onClick="javascript:getValue('http:&#47;&#47;www.cnn.com&#47;2013&#47;01&#47;10&#47;travel&#47;flight-movie-united-232&#47;index.html?iref=obnetwork');return false;">        
  <s:property value="newsName" /></a>
</s:iterator>

不会抛出这样的错误。

的价值:

<s:property value="news"/>

是字符串:

http:&#47;&#47;www.cnn.com&#47;2013&#47;01&#47;10&#47;travel&#47;flight-movie-united-232&#47;index.html?iref=obnetwork

我通过将其输出到页面来检查这一点。

而且,不,我不必逃避财产本身;这有效:

<a id="idname" href="#" onClick="javascript:getValue('http://www.blah.com/<s:property value="otherValue"/>');return false;"><s:property value="userName" /></a>
4

1 回答 1

0

我无法重现该问题。

查看下面的源代码:找到不同之处(在功能级别上),您可能会发现错误。(大部分是从实时应用程序中剪切和粘贴的,尽管我手动编辑了一些名称。)

Foo.java,保存数据:

public class Foo {
    private String news;
    private String newsName;
    // Plus public getters and a ctor to init.
}

AnAction.java,创建并公开列表:

public class AnAction extends ActionSupport {

    private List<Foo> foo; // Plus public getter.

    public String execute() throws Exception {
        foo = Arrays.asList(new Foo("http:&#47;&#47;www.cnn.com&#47;2013&#47;01&#47;10&#47;travel&#47;flight-movie-united-232&#47;index.html?iref=obnetwork", "YOOOOOO!"));
        return SUCCESS;
    }
}

struts.xml,配置:

<action name="a" class="test.AnAction">
  <result>/WEB-INF/jsps/a.jsp</result>
</action>

a.jsp,视图层:

<%@ taglib prefix="s" uri="/struts-tags" %>

<html>
  <body>
    <s:iterator value="%{foo}" status="stat">
      <a id="idname" href="#" onClick="getValue('<s:property value="news"/>'); return false;"><s:property value="newsName" /></a>
    </s:iterator>
  </body>
</html>
于 2013-01-11T14:43:36.153 回答