在我的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>
答案 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。