Java 如何在Struts 2中将url推送到值堆栈上

Java 如何在Struts 2中将url推送到值堆栈上,java,javascript,jsp,struts2,valuestack,Java,Javascript,Jsp,Struts2,Valuestack,我正在使用Struts 2.3.16 如何将操作URL推送到值堆栈上 我试过: 即使我有struts.devMode=true,上述所有操作都会失败,并且不会记录任何错误。 由于s:push需要值,因此真正需要的是第三个选项的失败 背景: 我需要将URL从select标记传递到单独的.js文件中的JavaScript函数,如下所示: 我知道如果函数是在我的.jsp文件中定义的,我可以在JS函数中使用',但是当JavaScript位于不同的文件中时,这不起作用 当我键入上述段落时,我意识到

我正在使用Struts 2.3.16

如何将操作URL推送到值堆栈上

我试过:


即使我有
struts.devMode=true
,上述所有操作都会失败,并且不会记录任何错误。 由于
s:push
需要值,因此真正需要的是第三个选项的失败

背景: 我需要将URL从select标记传递到单独的
.js
文件中的JavaScript函数,如下所示:


我知道如果函数是在我的
.jsp
文件中定义的,我可以在JS函数中使用
'
,但是当JavaScript位于不同的文件中时,这不起作用

当我键入上述段落时,我意识到我可以在JSP中定义一个JavaScript函数,该函数将URL传递给
ajaxFunction

所以现在我的问题是纯学术性的


是否有方法将
s:url
推送到值堆栈上?

如果使用标记的
var
属性,它会将值放入值堆栈


也可以使用不带参数的函数


函数ajaxFunction(){
var methodUrl='';
//甚至更好
var methodUrl2='';
}
好的,如果您想在值堆栈中输入一个值,您应该使用这个标记,但是该值应该是对对象的引用,它将转换为字符串url并作为参数传递给JS函数


函数ajaxFunction(url){
警报(url);
}

由于缺乏正面响应,似乎无法使用s:push将s:url推送到值堆栈上。罗曼的回答和我想要的不太一样

根据Roman的回答和我自己的实验,显然必须使用s:url的var属性才能获得值堆栈上的url。为了防止URL出现在页面上,必须在JSP中使用JavaScript,例如根据Roman的第二个代码块:

<script type="text/javascript">
  function noNeedToExecute(){
    var dummy = '<s:url action="action" method="method" var="methodUrl" />';
  }
</script>

函数noNeedToExecute(){
虚拟变量=“”;
}
或者,必须像这样使用CSS:

<style>
  .hidden {display: none;}
</style>
...
<span class=hidden>
  <s:url action="action" method="method" var="methodUrl" />
</span>

.hidden{显示:无;}
...
我希望实现一个纯粹的Struts,但显然我必须失望地生活


我留下以上这些是为了不隐瞒我完全错了的事实。我不知道我犯了什么错误,让我相信
会在页面上显示URL,然后需要隐藏。我错了,很抱歉浪费了Roman C的时间。

“如果使用url标记的var属性,它会将值放入值堆栈中。”正确。然后我所要做的就是隐藏页面上URL的显示。我在找更干净的东西。“您也可以使用不带参数的函数”正如我所说的,我意识到我的onchange事件可以调用jsp中的JS函数,然后调用.JS文件中的函数来完成真正的工作。我只是想知道是否有办法将URL推送到值堆栈上。当你脱机时,我已经设法为它添加了一个尾部。Roman C,很抱歉,我不理解你最近的评论。Roman,我解决了上面描述的问题。这就是为什么我说,“当我键入上述段落时,我意识到我可以在JSP中定义一个JavaScript函数,将URL传递给ajaxFunction。因此,现在我的问题纯粹是学术性的。”我将回答我自己的问题。学术性的,我已经为您编写了一段代码,向您展示如何正确使用push标记,因为您的示例都不起作用。如果您认为push标签的主体应该是值,那么您将感到失望。为此,我提供了深入学习文档的参考链接。您也不能使用嵌套在属性中的struts标记。