【问题标题】:Pass value of AngularJS variable to JSP directly or by intermediate JS variable直接或通过中间 JS 变量将 AngularJS 变量的值传递给 JSP
【发布时间】:2016-10-26 20:17:49
【问题描述】:

我在 .jsp 网页中有一个 AngularJS 嵌套下拉菜单:

<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); 
%>

我的最终尝试(上图)基于this 切线相关的 Plunkr。但是 angular 在我的尝试中是未定义的,我无法弄清楚 angular 在示例中是如何工作的,或者我可以用什么对象名称代替它(我尝试了所有方法)。

我已经加载了 jQuery 库,但我不在乎是否使用它。

更新:

我尝试将id="mymenu" 放在select 元素中,然后这样做:

<script>
var v = window.document.getElementById("mymenu").selectedIndex;
document.writeln(v);
</script>

这看起来很有希望,只是它总是返回-1更新:在沿着这条路走了一个小时后,我不再认为常规的 JavaScript window 可以从 Angular 接收值,尽管相反的情况是可能的——通常与 document.getElementById 相同。 p>

【问题讨论】:

    标签: javascript java angularjs jsp


    【解决方案1】:

    AngularJS(javascript 框架)在浏览器上运行,而 JSP 在服务器上运行,它们被编译为 HTML 并作为响应返回。

    This 有一个很好的图表来显示 JSP 所在的位置。

    如果您想向您的 JSP 页面发送信息,那么您可以向其 URL 发送请求。

    例如,如果您想从 JSP 中获取名称列表 xyz.jsp,则向 URL http://&lt;your domain&gt;/xyz.jsp?operation=getnamelist 发送请求。

    其中操作(可以是任何你想要的名字)是一个GET请求参数。

    在您的情况下,您可以从您的 angularJS 代码向您的 JSP URL 发送一个请求,其中包含有关运行哪个 JAVA 代码的说明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 2013-03-22
      • 2012-01-29
      • 2017-12-30
      相关资源
      最近更新 更多