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

时间:2013-11-25 15:43:51

标签: java javascript jsp struts2

在我的struts2应用程序中,我有一个JavaScript函数来取消。此方法位于标头中,只对我的返回URL执行window.location。由于我们从struts 2.3.8版本的2.0.11版本进行了迁移,因此它不再有效。当我查看生成的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>

2 个答案:

答案 0 :(得分:0)

<s:property value="#urlBack"/> - 我们需要&#34;#&#34;在urlBack之前。我们需要的是urlBack属性在动作类中使用public String getUrlBack()方法。并且应该在Action返回成功/结果之前初始化变量。

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

    默认情况下,
  • includeParams自Struts 2.1.3开始为none
  • id属性已被var
  • 取代
  • javascript:是不适用于JS函数的URL协议,请参阅this