2013-11-25 2 views
1

В моем приложении struts2 У меня есть функция JavaScript для отмены. этот метод находится в заголовке и только делает window.location для моего URL-адреса возврата. Поскольку мы перешли с версии 2.0.11 версии struts 2.3.8, она больше не работает. Когда я смотрю на сгенерированный HTML-код, мы видим, что не удается интерпретировать свойство тега s:, потому что URL-адрес пуст. Я не вижу, что не работает.Как использовать свойство s: в функции JavaScript

в моем 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> 
+0

Вы также можете напрямую использовать параметризованный тег 'url'. –

ответ

0

<s:property value="#urlBack"/> - нам нужно «#» до urlBack. Все, что нам нужно, это urlBack property in action class с методом 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> 

также

  • includeParams по умолчанию является none так Struts 2.1.3.
  • id атрибут заменяется var
  • javascript: является протоколом для URL-адреса не для функций JS см this.
Смежные вопросы