Struts unterminated字符串常量错误调用JS函数

时间:2013-01-11 11:43:02

标签: javascript struts2 struts

我试图从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>

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

当我使用“news”变量的文字值时:

<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>

1 个答案:

答案 0 :(得分: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>