【问题标题】:How to pass data from controller to service?如何将数据从控制器传递到服务?
【发布时间】:2017-03-23 23:58:21
【问题描述】:

我有一个带有功能的 Angular 服务:

// service.js

function DoSomething($resource) {
  var resourceUrl = 'right/here';
  return $resource(resourceUrl, {},  {
    'action': {
      method: 'POST'
    }
  });
}

还有一个带有 2 个参数(param1、param2)的 @RestController。

当我这样使用服务时:

// service.js

function DoSomething($resource) {
  var resourceUrl =  'right/here';

  return $resource(resourceUrl, { param1: "abc", param2: "def" },  {
    'action': {
      method: 'POST'
    }
  });
}

它工作正常。但是当我想从我的控制器传递这些值时,像这样:

// controller.js

DoSomething.action(
  { param1: "abc" },
  { param2: "def" }
);

虽然服务部分仍然是空的

// service.js

return $resource(resourceUrl, {},  {

我的@RestController 只接收一个值——从左边数第一个。如何解决?

【问题讨论】:

  • 你想从控制器传递param1 & param2 吗?
  • 是的,这正是我想做的,我认为这很清楚:)
  • 是的,只是想确认一下,我已经更新了下面的答案。请看一看。

标签: angularjs


【解决方案1】:

由于操作方法是 POST。需要一个数据对象。

var paramObj = {param1: value1, param2: value2};
var dataObj = {};

DoSomething.action(paramObj, dataObj);

paramObj 定义的参数作为查询参数附加:

resourceUrl + "?param1=value1&param2=value2"

dataObj 被编码为 JSON 字符串并放入 POST 的正文中。

如果仅使用一个参数调用操作方法 (POST):

DoSomething.action(dataObj);

$resource 服务将 dataObj 字符串化并将其放入 POST 的正文中。 URL 参数取自 $resource 定义的默认值。

【讨论】:

    【解决方案2】:

    使用$resource(resourceUrl, {}, {,您可以从您的控件传递参数,如下所示,

    //controller.js
    
    DoSomething.action({}, {param1: "abc", param2: "def"});
    

    【讨论】:

    • 它不起作用:(我想将两个单独的值从我的控制器传递给我的服务,以便服务可以将它们传递给 RestController,其定义如下:public void m(at RequestParam String param1, 在 RequestParam String param2);
    • 你说的那个return $resource(resourceUrl, {param1:"abc", param2:"def"}, { 工作得很好。控制器发送的内容完全相同,应该是这样的。由于此对象将附加为request body json。因此你不能有两个身体对象。如果您解释/发布代码为什么您的控制器需要两个参数,那么我可以建议更改此代码
    • 您可以在问题中发布控制器代码吗?我去看看。
    • 看起来你的 spring @Restcontroller 期望这是请求参数而不是请求正文
    • 您可以在@RestController 中尝试RequestBody,而不是RequestBody
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多