angularjs - 如何从spring控制器返回一个字符串值而不是java bean类
问题描述
我需要通过 angularjs 调用基于 Spring 控制器的 url,并将 Spring 控制器返回的响应打印到浏览器。
所以这是一个 PoC,其中主页包含一个按钮,当用户单击该按钮时,它在内部调用一个函数,并在该函数中调用 Spring 控制器。
当消息被包装在Java Bean 类中并按原样返回 Java Bean 类时,它会显示消息。
但是当我从控制器返回一个直接的字符串值时,它会在浏览器控制台中打印undefined 。
我是 Angular+Spring 集成的新手,所以有什么方法可以从控制器返回直接字符串/整数obj。
我的控制器
-------
@RestController
public class MyController {
@RequestMapping(value="/home")
public ModelAndView showHome() {
return new ModelAndView("home");
}
@RequestMapping(value="/getMessage",method=RequestMethod.GET,produces="application/json")
public String getMessage() {
/*Message msg= new Message();
msg.setMesg("Hello From AngularJS");*/
return "Hello From AngularJs";
}
}
注意 -我直接从控制器而不是Message对象返回一个字符串值。
Home.jsp
-------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Home| Page</title>
<link rel="stylesheet" href='<c:url value="/main.css"></c:url>'>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script type="text/javascript">
var app= angular.module("myApp",[]);
app.controller("hello",function($scope,$http){
$scope.getMessage= function(){
$http({
method: 'GET',
url: 'getMessage' /* Tried even with fully qualified url 'http://localhost:8080/AngularJs-Spring-HelloWorld/getMessage' */
}).then(function successCallback(response){
$scope.user= response.data;
},function errorCallback(response){
console.log(response.statusText);
});
}
});
</script>
</head>
<body ng-app="myApp" ng-controller="hello">
<div class="bb">
<h2 style="color: orange;text-align: center;">Angularjs Spring MVC sample application!!</h2>
<button style="text-align: center;" ng-click="getMessage()">Greet User</button>
<p>{{user}}</p>
</div>
</body>
</html>
如何从控制器返回字符串值并在浏览器中显示。有没有办法从控制器返回一个字符串值?
或者返回的字符串值将被视为在普通 spring-mvc 应用程序中处理的视图页面名称。
解决方案
在您的应用程序中导入 GSON jar 并按如下方式更改您的 return 语句,然后您可以从 spring 控制器返回一个字符串。
@RequestMapping(value="/getMessage",method=RequestMethod.GET,produces="application/json")
public String getMessage() {
/*Message msg= new Message();
msg.setMesg("Hello From AngularJS");*/
return new GSON. toJson("Hello From AngularJs");
}
同样,如果您要返回任何类型的 java bean,您可以将 bean 转换为 JSON 字符串并将其作为字符串返回,如下所示
@RequestMapping(value="/getMessage",method=RequestMethod.GET,produces="application/json")
public String getMessage() {
Message msg= new Message();
msg.setMesg("Hello From AngularJS");
return new GSON.toJson(msg);
}
推荐阅读
- python - 如何推迟函数的执行?
- python - 索引numpy矩阵
- excel - 用户窗体最小化时取消滚动
- swift - Swift:尝试访问数组中对象的值时出现错误
- cookies - 如何在 AspNet Core 中列出带有更改的 cookie
- nexus - 配置 helm 连接到 nexus
- swisscomdev - 在 Swisscom Application Cloud 上自动创建、恢复和下载 MongoDB 备份
- http - JMeter:我如何对随机 2 个浮点数求和
- laravel - npm 的新手 get SyntaxError: Unexpected token
- ios - Xcode 10 上的 iOS 模拟器崩溃