Jor*_*own 5 ajax json portlet spring-mvc spring-portlet-mvc
我花了最近六个小时来搜索谷歌和stackoverflow来回答这个问题.我原来是一名PHP开发人员,所以请耐心等待 - 从PHP控制器返回一个JSON数组是微不足道的.
我正在使用Spring MVC 3.0,我只想将JSON对象从我的Spring MVC Controller返回给一些Javascript.目前似乎没有简单的方法来使用portlet(https://jira.springsource.org/browse/SPR-7344)进行此操作.我见过的解决方案建议创建另一个提供JSON响应的DispatcherServlet,但我还没有找到一个记录良好的例子.如果有人知道一个很好的方法来完成这个(最好带注释),请告诉我!
我最终找到了一个从Spring MVC portlet控制器返回"JSON"的解决方法.这就是我做到的.
在我的控制器中:
@ResourceMapping("ajaxTest")
public void ajaxHandler(ResourceRequest request, ResourceResponse response)
throws IOException {
OutputStream outStream = response.getPortletOutputStream();
StringBuffer buffer = new StringBuffer();
Map<String, String> testMap = new HashMap<String, String>();
testMap.put("foo", "bar");
String test = new JSONObject(testMap).toString();
buffer.append(test);
outStream.write(buffer.toString().getBytes());
}
Run Code Online (Sandbox Code Playgroud)
在"view.jsp"中:
<portlet:resourceURL var="ajaxtest" id="ajaxTest"/>
<script type="text/javascript">
$.get('<%= ajaxtest %>', function(response) {
var json = eval('(' + response + ')');
});
</script>
Run Code Online (Sandbox Code Playgroud)
由于@ResourceMapping注释当前不支持返回JSON,我只是使用org.json.JSONObject将我的地图转换为JSON对象,然后返回该对象的toString().@ResourceMapping的值应该与resourceURL的id匹配.使用eval将JSON字符串转换为Javascript会带来安全风险,但我只是将其包括在内,因为它是最简单的示例.如果您担心安全性,请使用JSON解析器.
| 归档时间: |
|
| 查看次数: |
12955 次 |
| 最近记录: |