【问题标题】:Getting 404 while sending data from controller.js to spring controller从controller.js向spring控制器发送数据时出现404
【发布时间】:2015-05-26 11:49:29
【问题描述】:

我必须将 id 发送到 spring 控制器,但我得到 404。我正在使用 angularjs、spring 和 mongodb。我正在完美地获取数据。 Onclick 的批准/拒绝按钮 ID 被传递给 controller.js 但之后我得到 404。

我还必须将行索引传递给控制器​​,以便在数据库中更新数据后删除行。这该怎么做?请提供一些逻辑。

HTML

<tbody>
  <tr ng-repeat="task in taskDetails">
    <td style="text-align: center;">{{task.name}}</td>
    <!-- <td style="text-align: center;">{{task.owners}}</td> -->
    <td style="text-align: center;">
      <span ng-repeat="owner in task.owners">{{owner.ownerName.name}}{{$last ? '' : ', '}}</span>
    </td>
    <td  style="text-align:center;">
      <button class="btn btn-mini btn-primary" ng-click="approveTask(task)" value="approveTask">Approve</button>
      <button class="btn btn-mini btn-danger" ng-click="rejectTask(task)" value="rejectTask">Reject</button>
    </td>
  </tr>
</tbody>

控制器

//controller.js
$scope.approveTask = function(task) {
    alert(task);
    var dataObj = {
        id : task.id
    };
    $http.post('/userNotification/task/approve', dataObj).success(function (data) {   
        alert("Approved! "+ data);
    });
}

$scope.rejectTask = function(task) {
    alert(task);
    var dataObj = {
        id : task.id
    };
    $http.post('/userNotification/task/reject'+ dataObj).success(function(data) {
        alert("Rejected! "+ data);
    });
}

弹簧控制器

//spring controller

package com.rmtool.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.rmtool.mongo.dao.TaskDAO;
import com.rmtool.service.MongoService;

@Controller
@RequestMapping("/userNotification")
public class UserNotificationController {

  @Autowired
  MongoService mongoService;

  @RequestMapping(value = "/fetchTaskForApproval",
                  method =  RequestMethod.GET)
  public @ResponseBody List<TaskDAO> notification(){
    System.out.println("entering notification");
    List<TaskDAO> taskDAOLists=new ArrayList<TaskDAO>();
    taskDAOLists = mongoService.fetchPendingTask("Pending Approval");
    System.out.println("exiting notification");
    System.out.println(taskDAOLists);
    return taskDAOLists;
  }

  @RequestMapping(value = "/task/approve", method = RequestMethod.POST)
  public @ResponseBody void approveTask(@RequestBody TaskDAO task){
    System.out.println("task Id :"+task.getId());
    mongoService.approvePendingTask(task.getId());
  }

  @RequestMapping(value = "/task/reject/{id}", method = RequestMethod.POST)
  public @ResponseBody void rejectTask(@PathVariable("id") String id){
    mongoService.rejectPendingTask(id);
  }
}

【问题讨论】:

  • 当您检查浏览器的控件时,在“网络”选项卡上,您的服务器的 URL 是否正常?您的 POST 是否真的试图到达 .../task/reject/{id}
  • 是的..它是正确的。请检查批准。我需要为拒绝做一些代码。
  • 你需要写$http.post('/userNotification/task/reject/'+ dataObj)而不是$http.post('/userNotification/task/reject'+ dataObj),否则他会在reject之后输入你的id。
  • 这是我写的:$scope.approveTask = function(task) { alert(task); var dataObj = { id : task.id }; $http.post('/userNotification/task/accept/',dataObj.id).success(function (data) { alert("Approved!"+ data); }); }
  • @RequestMapping(value = "/task/approve", method = RequestMethod.POST) public @ResponseBody void approveTask(@RequestBody TaskDAO task){ System.out.println("task Id :"+任务.getId()); mongoService.approvePendingTask(task.getId()); }

标签: angularjs spring mongodb


【解决方案1】:
This is working fine... 
//controller.js

$scope.approveTask = function($index,$task) {
        $scope.currentIndex = $index;
        //alert($task+$scope.currentIndex);
        var dataObj = {
                id : $task.id

            };
                  $http.post('userNotification/approve',dataObj).success(function (data) {   
                  alert("Approved! ");
                  $scope.taskDetails.splice($scope.currentIndex, 1);
                     $scope.currentIndex = -1;
          });
        }

        $scope.rejectTask = function($index,$task) {
            $scope.currentIndex = $index;
            //alert($task+$scope.currentIndex);
            var dataObj = {
                    id : $task.id

                };
          $http.post('userNotification/reject', dataObj).success(function(data) {
             alert("Rejected! ");
             $scope.taskDetails.splice($scope.currentIndex, 1);
             $scope.currentIndex = -1;
          });
        }

//SpringController
@RequestMapping(value = "/approve", method = RequestMethod.POST)
     public @ResponseBody void approveTask(@RequestBody TaskDAO task){
         System.out.println("task Id :"+task.getId());
         mongoService.approvePendingTask(task.getId());
     }


     @RequestMapping(value = "/reject", method = RequestMethod.POST)
     public @ResponseBody void rejectTask(@RequestBody TaskDAO task){
         System.out.println("task Id :"+task.getId());
         mongoService.rejectPendingTask(task.getId());
     }

【讨论】:

    猜你喜欢
    • 2013-05-28
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 2015-04-14
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多