【问题标题】:how to inject spring ModelAndView object attributes in to an Angular module?如何将 spring ModelAndView 对象属性注入 Angular 模块?
【发布时间】:2013-03-22 04:59:31
【问题描述】:

我的应用程序使用带有 apache 速度的 SpringMVC。现在我要将 Angularjs 控制器添加到 *.vm 文件(速度文件)中。我在访问 Spring 控制器返回的 ModelAndView 对象中设置的对象时发现了问题。

谁能给我一个简单的例子来说明如何做同样的事情?

示例: Controller.java

ModelAndView mav = ControllerUtil.createModelView();
String dataSource = Constant.DATA_SOURCE;
HttpSession session = (HttpSession) mav.getModel().get("httpSession");  
**mav.addObject("dataSource", dataSource);**

请举例说明如何在 AngularJS 模块中获取 'dataSource' 值。

提前致谢, DBKnot 团队

【问题讨论】:

标签: spring angularjs code-injection modelandview


【解决方案1】:

我不熟悉速度,但我也在努力寻找一种方法来完成您似乎想要做的事情。

我目前正在探索(也测试过)这种方法。使用Jackson 将您的对象解析为字符串。这可以在控制器上或通过自定义标记在 JSP 中完成。

例子:

    ObjectMapper jsonMapper = new ObjectMapper();
    String result = null;
    try {
        result =  jsonMapper.writeValueAsString(obj);
    } catch (Exception e) {
        // Handle it
    }
    **mav.addObject("dataSource", result);**

在 HTML/JSP/Whatever 上有类似的东西

<div ng-controller="MyCtrl" ng-init="init(${dataSource})">...</div>

让你的控制器的 init 方法处理剩下的事情。

注意

与往常一样,您应该阅读文档,AngularJS 建议模型应该通过 AJAX 请求进行初始化,而不是从 DOM 中获取(这就是这里发生的情况)。

我很想看到这个的替代品

【讨论】:

  • 需要注意的重要一点是,这种策略非常脆弱。如果您的数据源中有引号/双引号,您可能会遇到麻烦
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 2020-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多