2016-01-07 45 views
0

我是一个初学者与春天和角。我在名为Search的com.test.alex中创建了一个控制器类。在我的搜索类我有这个java代码:GET与angularjs和弹簧

package com.siemens.cvc.isrules.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 


@Controller 
public class Search { 

    @RequestMapping(value = "/getHelloWord", method = RequestMethod.GET) 
    public @ResponseBody String getHelloWord(ModelMap model){ 
     String jsonData ="[{\"salut\":\"Hello Word\"}]"; 
     return jsonData; 
    } 

} 

然后,我有以下按钮UI:

<div class="input-group-addon" ng-click="doSearch();"><span class="glyphicon glyphicon-search"></span></div> 

当我按下那个按钮,我想提出一个要求,以“/ getHelloWord “(搜索课程)并提醒响应。

这是angularjs控制器:

app.controller("search",function($scope,$http){ 
        $scope.doSearch = function() 
        { 
         $http({ 
          method : 'GET', 
          url : '/ISRulesTool/getHelloWord' 
         }).success(function(data,status,headers,config){ 
          alert(data); 
         }).error(function(data,status,headers,config){ 
          alert("Request Error"); 
         }); 
        }; 
}); 

和我的问题是404 “GET http://localhost:8080/ISRulesTool/getHelloWord 404(未找到)”

如果我需要获得响应请求?

谢谢。

+0

对不起,该软件包是com.siemens.cvc.isrules.controller –

+0

你在哪里声明了路径/ ISRulesTool? – Eria

+2

您可以使用'@ RestController'而不是'@ Controller',并在所有方法上丢失'@ ResponseBody'。但这不是问题。请注意,在AngularJS> = 1.4.4的情况下,不建议使用.success()和.error()(请参阅https://docs.angularjs.org/api/ng/service/$http)。 – Eria

回答

0

我解决了这个问题。 我需要在web.xml

<servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

添加和创建一个新的文件调度-servlet.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation=" 
     http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 

    <context:component-scan base-package="com.siemens.cvc.isrules.controller" /> 
    <mvc:annotation-driven /> 
</beans> 

现在工作得很好。 Thx全部支持。

1

我认为“url”您提到的$ http url params是错误的。确保给定的URL是否正确。

app.controller("search",function($scope,$http){ 
       $scope.doSearch = function() 
       { 
        $http({ 
         method : 'GET', 
         url : 'http://localhost:8080/getHelloWord' 
        }).success(function(data,status,headers,config){ 
         alert(data); 
        }).error(function(data,status,headers,config){ 
         alert("Request Error"); 
        }); 
       }; 

});

你可以像我上面提到的那样更改网址吗?

通过使用POSTMAN(REST客户端 - 扩展的铬)您可以验证GET请求是否正常工作。

+0

没有用。我使用http:// localhost:8080/getHelloWord网址。 –

+0

没有。 OP使用的URL是正确的。他只是使用相对URL而不是像你在这里提到的绝对URL – Arkantos