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 に答える