2013-11-25 42 views
1

在我的struts2應用程序中,我有一個JavaScript函數來執行取消操作。這個方法在標題中,只對我的返回URL做一個window.location。由於我們從struts 2.3.8版本的2.0.11版本開始遷移,因此它不再有效。當我查看生成的HTML代碼時,我們發現無法解釋標籤s:屬性,因爲URL是空的。我不明白什麼是行不通的。如何在JavaScript函數中使用s:屬性

在我的IDE

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

結果與螢火蟲:

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> 
+0

您也可以直接使用參數化的url標籤。 –

回答

0

<s:property value="#urlBack"/> - 我們是否需要urlBack之前的「#」。我們需要的是urlBack財產在行動類與public String getUrlBack()方法。在Action返回成功/結果之前,變量應該被初始化。

0

首先,您需要創建一個變量urlBack然後將其用於呈現網址。例如

<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:替換爲URL的協議不是JS功能,參見this
相關問題