【问题标题】:How to set Struts2 Property as Parameter of a JavaScript function?如何将 Struts2 属性设置为 JavaScript 函数的参数?
【发布时间】:2015-11-13 11:00:18
【问题描述】:

我想通过以下方式使用JavaScript方法myJSFunction

<button onclick="myJSFunction('<s:property value="myJavaModel.myJavaMethod(<s:property value="myStuff"/>)" />')">Finalize</button>

JavaScript 方法需要一个参数,该参数基于 Java 类的方法。可以调用不使用参数的方法。但是这个 Java 方法需要一个来自 Struts2 动作类的值。该值在此上下文中仍然可用,但是如何在 Java 方法中将此属性值作为参数传递。语法错误。

【问题讨论】:

  • 当您删除嵌套的&lt;s:property&gt; 标记并仅使用myStuff 时会发生什么?
  • 这就是亚历山大的答案!谢谢!
  • 使用合法的JSP往往是第一步。
  • @Marwief:不客气。查看完整答案。

标签: javascript java struts2 ognl


【解决方案1】:

你不能嵌套这样的标签,你也不需要。将评估 &lt;s:property&gt; 标签 value 属性内的所有内容。因此,如果您有 myStuff 并使用了访问器,那么下面的代码将起作用。

<button onclick="myJSFunction('<s:property value="myJavaModel.myJavaMethod(myStuff)" />')">Finalize</button>

【讨论】:

    【解决方案2】:

    您可以将myStuff 值存储在JSP 页面的隐藏参数中。 将此隐藏值传递给 JS。

    <input type="hidden" name="myStuffValue" value="<%=myModel.getMyMethodValue%>">
    <input type="submit" onclick="play(<s:property value="myStuffValue"/>)">
    

    【讨论】:

    • 您将值设置为 DOM 中的隐藏表单字段并尝试使用 JSP 标记访问它:( 您也可以只使用 &lt;s:set&gt;,但只需按照预期的方式使用 OGNL在这种情况下就足够了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2012-04-12
    • 1970-01-01
    • 2019-05-09
    相关资源
    最近更新 更多