angularjs调用springmvc action时,访问到action但是数据不能正确返回到angular controller中

问题:angularjs调用url: /admin/query ,  action方法已经进去了,数据也查询到了,但是数据angularjs controller.js中无法获取到,浏览器中看到/admin/admin/query地址的调用(不知道为啥多加了个/admin),都报404错了。

解决:springMVC action方法必须要增加注解@ResponseBody。

webapp/jsp/main.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

<title></title>

<link href="/css/bootstrap.min.css" rel="stylesheet">

<script src="/js/jquery.min.js"></script>

<script src="/js/angular.min.js"></script>

<script src="/js/angular-resource.min.js"></script>

<script src="/js/angular-route.min.js"></script>

<script src="/app.js"></script>

<script src="/controller/controllers.js"></script>

<script src="/service/services.js"></script>

</head>

<body ng-app="myApp">

hello test<BR>

<div ng-controller="PhoneCtrl2">

<div ng-repeat="p in phones">

{{p.name}} {{p.age}} {{p.phone}}

</div>

<ul>

<li ng-class-odd="‘odd‘" ng-class-even="‘even‘" ng-repeat="p in phones">

{{p.name}} {{p.age}} {{p.phone}}

</li>

</ul>

</div>

<div ng-controller="widthCtrl">

<div style="width: 5px;height: 10px;background-color: red"></div>

<input type="text" name="width" ng-model="widthModel">

</div>

<label ng-controller="usernameCheckCtrl">

判断用户名是否存在,输入"abc"则返回存在<BR>

用户名:<input type="text" ng-model="username" ng-blur="checkUsername111()">

<span style="color: red" ng-show="isUsernameExisted">用户名已经存在</span>

</label>

<div ng-init="a=2">

<ul ng-switch on="a">

<li ng-switch-when="1">1</li>

<li ng-switch-when="2">2</li>

<li ng-switch-default>other</li>

</ul>

</div>

</body>

</html>

action:

@Controller

@RequestMapping("/admin")

public class LoginAction {

private static final Logger log = LoggerFactory.getLogger(LoginAction.class);

@Resource(name = "mAdminBO")

private MAdminBO mAdminBO;

@RequestMapping("/query")

@ResponseBody

public Object query(@RequestParam("admin") String admin, HttpSession session) {

log.info("query admin={}", admin);

MAdmin param = new MAdmin();

param.setAdmin(admin);

MAdmin ret = null;

ret = new MAdmin();

ret.setAdmin("abc");

ret.setStatus(1);

ret.setModdate(new Timestamp(new Date().getTime()));

// try {

// ret = mAdminBO.query(param);

// } catch (Exception e) {

// log.error("", e);

// }

log.info("query result:{}", ret);

return ret;

}

app.js:

// 模块可以按任意的顺序定义,模块要先定义,后使用

angular.module(‘myApp‘, [‘ctrl‘,‘ngResource‘]);

angular.module(‘ctrl‘, [‘svc‘]);

angular.module(‘svc‘, []);

controllers.js:

angular.module(‘ctrl‘);

var app=angular.module(‘myApp‘);

app.controller(‘usernameCheckCtrl‘,function($scope,MAdminSvc){

//失去焦点,校验username

/*$scope.checkUsername=function(){

if($scope.username=="zgx"){

$scope.isUsernameExisted=true;

}else{

$scope.isUsernameExisted=false;

}

}

*/

//实时校验

$scope.$watch(‘username‘,

function(to,from){

console.log("--username="+$scope.username);

var promise=MAdminSvc.query($scope.username);// 同步调用,获得承诺接口

promise.then(function(data){// 调用承诺API获取数据 .resolve

console.log("admin="+data.admin);

if($scope.username==data.admin){

$scope.isUsernameExisted=true;

}else{

$scope.isUsernameExisted=false;

}

},function(data){//处理错误 .reject

console.log("err: "+data);

$scope.isUsernameExisted=false;

})

}

)

});

services.js:

angular.module(‘svc‘);

var app=angular.module(‘myApp‘);

//使用factory定义服务:通过admin查询M_ADMIN数据

app.factory(‘MAdminSvc‘, [‘$http‘,‘$q‘,function ($http,$q) {

return {

query:function(admin){

var deferred=$q.defer();

if(admin==null||admin==""){

return deferred.promise;

}

$http({

method:‘POST‘,

//headers: {‘Content-type‘: ‘application/json;charset=UTF-8‘},

url:‘/admin/query‘,

responseType:‘json‘,

params: {‘admin‘:admin}

}).success(function(data,status,headers,config){

console.log(data+"==="+data.admin);

deferred.resolve(data);//成功,返回数据

}).error(function(data,status,headers,config){

console.log("status="+status);

deferred.reject(data);//失败,返回错误信息

});

return deferred.promise;// 返回承诺,这里并不是最终数据,而是访问最终数据的API

}

};

}])

时间: 2024-08-25 09:03:03

angularjs调用springmvc action时,访问到action但是数据不能正确返回到angular controller中的相关文章

Struts2的动态Action和默认后缀.action

1:Struts2的默认访问后缀是.action(特别需要注意的是改了配置文件web.xml或者struts.xml需要重启服务器) 2:Struts2中常用的常量介绍:<!-- 一:全局配置 --> <!--1.请求数据编码  --><constant name="struts.i18n.encoding" value="UTF-8"/><!--2.修改struts2默认的自定义后缀 --><constant

JavaEE使用三层架构(显示层、业务逻辑层、数据访问层)实现数据的增删改查

实例: 1.功能描述 实现一个简易新闻发布系统,包括查看.添加.修改和删除新闻等基本功能 2.具体要求 (1) 创建数据库 newssystem,创建表 news,要求如下: (2) 程序运行时,显示'发布新闻'页面(如图 1),输入相关内容,单击'提交'按钮,将新闻内容添加到数据库 (3) 单击图 1 中的'查看'按钮,显示'查看新闻'页面(如图 2),增加'修改'和'删除'链接 (4) 单击图 2 中的'update'链接,显示'修改新闻'页面(如图 3),修改后单击'修改'按钮确认,单击'

如何在yii的controller中调用外部action

问题: 在yii中,一个controller会包含若干个action.有时为了重用或代码管理等目的,我们希望这些action可以单独定义成一个类,然后在controller中使用.那么在yii中要如何实现呢? 假设我们有这样一个例子 TestController.php,文件位于wwwroot/blog/controllers/,wwwroot对应http://www.example.com/ 代码如下: [php] view plaincopy <?php class TestControll

Struts2系列:(3)Action的访问路径和缺省后缀

在第(1)节"入门"的时候,做了一个简单的案例. 在第(2)节"Struts配置文件",对struts.xml文件中的package.action和result进行了简单介绍. 在本节中,则对struts.xml中的配置和uri之间的映射做一个介绍. 1.Action访问路径 struts2中,调用action的URL路径= 包的命名空间+"/"+action的名称 例如: 访问StudentAction的URL路径为: /test/studen

Struts2 Action的访问路径

1.     Action的访问路径 扩展名 缺省以.action结尾,请参考:default.properties文件,可以通过配置改变这一点: <constant name="struts.action.extension" value="action,do,webwork" /> 上述配置,将使得可以通过.action或.do或.webwork访问Action对象 访问路径的容错能力 比如:我们配置某个package的namespace="

在 Service 和 Activity 之间传递 Action 时,Action 定义的问题【重名】

在 Service 和  Activity 传递 Action 时,出现如下的错误.刚开始以为是权限不够,所以在研究 INJECT_EVENTS,最后发现不是权限的问题,而是消息定义的问题.先在 manifest 增加中如下内容: <uses-permission android:name="android.permission.INJECT_EVENTS" /> 在 manifest 提示如下错误: Permission is only granted to system

ajax发起action时触发拦截器

    做项目的时候遇到了一个问题   当ajax发起action时触发拦截器时返回值在拦截其中就更没有接收到一样不会发起跳转 , 而用pos表单t提交的时候是可以的     纠结了很久现在找到了一个方法, 感觉不是很科学 ,  能实现   希望哪位好心人看到过后能给下高手的解决办法           可行的解决办法如下:             struts2 配置如下:                            <span style="font-size:12px;&q

struts2之day01——06Struts2的action方法访问

struts2之day01--06Struts2的action方法访问                           (重点) 一.Action的方法访问介绍 1.有三种方法实现 第一种  使用action标签的method属性,在这个属性里面写执行的action的方法: 第二种  使用通配符方式实现: 第三种  动态访问实现(基本不用) 2.演示错误 (1)如果action方法有返回值,在配置文件中没有配置,出现错误 (2)在action里面的方法有返回值,如果有返回值时候类型必须是St

Spring AOP操作action时无法注入,报NullPointer异常

Spring AOP操作action时无法注入,报NullPointer异常当使用Spring AOP对action层进行操作时,会出现注入失败的问题,出现空指针异常.原因是一般struts2+spring应用中,spring的插件只负责为action的ioc部分,但并没有进行功能加强,即采用代理的机制,所有的action还是使用struts2进行管理,在使用AOP后,这些action需要由spring进行管理,如果没有由spring进行代理,将出现注入失败.解决办法:Struts2的一个特殊的