如何在 JavaScript 函数中使用 s:property

问题描述 投票:0回答:2

在我的 Struts 2 应用程序中,我有一个 JavaScript 函数来执行

cancel()
。此方法位于标头中,仅对我的返回 URL 执行
window.location
。由于我们从 Struts 版本 2.0.11 迁移到 Struts 2.3.8 版本,因此它不再有效。当我查看生成的 HTML 代码时,我发现它无法解释标记
<s:property>
,因为 URL 为空。我看不出有什么不起作用。

在我的 IDE 中:

function cancel() {
        if (!isModified || (isModified && askConfirmCancel())) {
            window.location.replace('<s:property value="#urlBack"/>');
        }
    }

Firebug 的结果:

function cancel() {
        if (!isModified || (isModified && askConfirmCancel())) {
            window.location.replace('');
        }
    }

在JSP文件中:

<tr>
    <td height="6%"align="center">
      <s:submit cssClass="button" key="common.initDelegate.label" align="center" theme="simple"/>
      <s:url id="urlBack" action="myAction" includeParams="none" escapeAmp="false">
        <s:param name="period.periodId" value="%{period.periodId}"></s:param>
      </s:url>
      <input type="button" onclick="javascript:cancel()" value="<s:text name="common.button.cancel"/>"/>
    </td>
  </tr>
java javascript jsp struts2
2个回答
0
投票

<s:property value="#urlBack"/>
——在
urlBack
之前需要加“#”吗?我们所需要的只是操作类中的
urlBack
属性和
public String getUrlBack()
方法。并且该变量应该在 Action 返回成功/结果之前初始化。


0
投票

首先您需要创建一个变量

urlBack
,然后将其用于渲染 URL。例如

 <s:url var="urlBack" action="myAction" escapeAmp="false">
   <s:param name="period.periodId" value="%{period.periodId}"></s:param>
 </s:url>
 <input type="button" onclick="cancel();" value="<s:text name="common.button.cancel"/>"/>
 <script type="text/javascript">
   function cancel() {
     if (!isModified || (isModified && askConfirmCancel())) {
        window.location.replace('<s:property value="#urlBack"/>');
     }
   }
 </script>

还有

    自 Struts 2.1.3 起,
  • includeParams
    默认为
    none
  • id
    属性替换为
    var
  • javascript:
    是 URL 协议,不适用于 JS 函数,请参阅 this
© www.soinside.com 2019 - 2024. All rights reserved.