我试图从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://www.cnn.com/2013/01/10/travel/flight-movie-united-232/index.html?iref=obnetwork');return false;">
<s:property value="newsName" /></a>
</s:iterator>
不会抛出此类错误。
值:
<s:property value="news"/>
是字符串:
http://www.cnn.com/2013/01/10/travel/flight-movie-united-232/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>
答案 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://www.cnn.com/2013/01/10/travel/flight-movie-united-232/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>