我在一个AngularJS网页中有一个.jsp嵌套下拉菜单:
<div ng-controller="AlgoController">
<select ng-model="myModel" ng-options="model.name group by model.shade for model in models"></select>我可以轻松地显示所选菜单项的值如下:
{{myModel.swValue1}}问题是,我需要告诉我的JSP代码值是什么,这样它就可以决定要运行哪个Java代码。
我一直在研究和实验,如果这是一个简单的JS变量,我可以像这样将它传递到JSP中:
<script>
var v = "I am the selected menu item";
</script>
<br><br><br>
<%
String st="<script>document.writeln(v)</script>";
out.println("value="+st);
%>有人说我可以这样做:
<script>
var v = $scope.myModel;
</script>或
<script>
var v = myModel.name;
</script>等等,但这似乎使v没有明确的定义。
我最好的尝试,仍然不起作用,是:
<script>
var scope = angular.element($("body")).scope();
var v = scope.myModel;
</script>
<br><br><br>
<%
String st="<script>document.writeln(v)</script>";
out.println("value="+st);
%>我的最后一次尝试(上面)是基于这切线相关的Plunkr。然而,在我的尝试中,angular是没有定义的,并且我无法弄清楚angular在这个示例中是如何工作的,也不知道我可以用什么对象名称来代替它(我尝试了一切)。
我已经加载了jQuery库,但我不关心如何使用它。
更新:
我尝试将id="mymenu"放在select元素中,然后执行以下操作:
<script>
var v = window.document.getElementById("mymenu").selectedIndex;
document.writeln(v);
</script>它看起来很有希望,只是它总是返回-1。更新:在沿着这条路径走了一个小时之后,我不再认为常规的JavaScript window可以从角度接收值,尽管相反的情况是可能的--一般document.getElementById也是如此。
发布于 2017-07-28 22:21:01
AngularJS (javascript框架)运行在浏览器上,而JSP运行在服务器上,在服务器上对它们进行处理并作为响应发送回来。
这有一个很好的图表,显示JSP驻留的位置。
如果要向JSP页面发送信息,则可以向其URL发送请求。
例如,如果您想从您的JSP、xyz.jsp获得一个名称列表,那么向http://<your domain>/xyz.jsp?operation=getnamelist发送一个请求。
其中操作(可以是您想要的任何名称)是GET请求参数。
在您的示例中,您可以从angularJS代码向JSP发送请求,并说明要运行哪一段代码。
https://stackoverflow.com/questions/40271426
复制相似问题