2016-08-03 94 views
0

我有2个页面一个是.jsp,另一个是.html。两者都有两个文本框和一个按钮。在按钮上单击我使用angularjs调用post方法。但是,当我使用.jsp页面时,它工作正常,但同样的事情不适用于.html。如何从html + angularjs页面调用Spring的控制器?

这里我Spring的控制器 -

@RequestMapping(value="/springAngularJS",method=RequestMethod.POST) 
public String addUser(@RequestBody User user) 
    { 
    System.out.println("Adding user dtl...."); 
    } 

这里是我的jsp页面级

$http.post("springAngularJS",$scope.user). 
    success(function(data, status, headers, config) { 
     $scope.person = data; 
    }). 
    error(function(data, status, headers, config) { 
     alert("Exception details: " + JSON.stringify({data: data})); 
    }); 

的代码是一样为我的.html文件为好。但上面的工作,但是当我处理.html它不是。 我将添加我的XML文件的详细信息须─

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/views/" /> 
     <property name="suffix" value=".jsp"/> 
</bean> 
<mvc:resources mapping="/views/**" location="/WEB-INF/views/" /> 

考虑我作为一个初学者,我的self..facing挑战学习。任何人有任何解决方案请回答。

回答

0

您的角度应用程序(前端)和您的Spring应用程序(后端)彼此没有任何知识。尽管如此,他们可以沟通,只要设置正确。 $ http.post()的第一个参数是一个URL。不过,您提供了“springAngularJS”,它只是您尝试点击的网址的结尾。所以这需要解决。

例如,您的Spring应用程序很可能在您的本地主机上运行,​​例如在端口8000上。因此,在本例中,您的Spring应用程序将在http://localhost:8000处可用。把它想象成你的Spring应用程序的基础URL。当您在Spring中使用以下注释@RequestMapping(value="/springAngularJS",method=RequestMethod.POST)时,您所说的是,只要使用正确的主体/有效内容向http://locahost:8000/springAngularJS的服务器发出POST请求,就会运行该方法。它基本上将'value'参数添加到我之前提到的基础url上。

因此,从您的角度应用程序,您需要击中http://locahost:8000/springAngularJS,而不仅仅是springAngularJS

总之,将$http.post("springAngularJS",$scope.user)更改为$http.post("http://locahost:8000/springAngularJS",$scope.user)(取决于您的服务器的实际url /端口)。

您还可以使用相对URL $ http.post,假设您的服务器和您的用户界面服务于相同的URL /端口,在这种情况下,您可以简单地执行$http.post("/springAngularJS",$scope.user)。请注意(相对)网址开头的斜杠。

相关问题