我是Spring和Portlet的新手。我想用jqgrid来显示一些列表。我试图在控制器中调用一个方法,该方法使用@RequestMapping进行注释,但该方法未被调用
我的控制器有以下方法
@Controller(value = "myController")
public class MyController {
@RequestMapping(value="/myURL",method=RequestMethod.GET)
public @ResponseBody MyDTO initItemSearchGrid(RenderResponse response, RenderRequest request){
MyDTO myDto=new MyDTO();
return myDto;
}
}
我使用AJAX的JSP代码
var urlink="/myURL"; /* myURL is the exact String written in value Attribute of
resourceMapping in Controller*/
$.ajax({
url :urlink,
cache: false,
data:$('#myForm').formSerialize(),
dataType: "json",
type: "GET",
contentType: "application/json; charset=utf-8",
success: function(jsondata){
...
}
});
当执行上面的AJAX代码时,我的方法不会被调用。
答案 0 :(得分:5)
您在问题中提到了Portlets。使用Spring和portlet与servlet有点不同。
所以,假设你有一个这样的portlet
@Controller
@RequestMapping("VIEW") // VIEW mapping (as opposed to EDIT)
public class MyPortlet {
@RenderMapping
public ModelAndView handleRenderView(RenderRequest request, RenderResponse response) {
ResourceURL resourceUrl = response.createResourceURL();
resourceUrl.setResourceID("myResource"); // this is the id used to reference a @ResourceMapping
ModelAndView ret = new ModelAndView("myPortlet");
ret.addObject("resourceUrl", resourceUrl.toString());
return ret;
}
@ResourceMapping("myResource")
public void handleMyResource(ResourceRequest request, ResourceResponse response) {
OutputStream out = response.getPortletOutputStream();
// write whatever to output
}
}
如您所见,@ ResourceMapping由资源ID标识。可以使用标准portlet API方法和类createResourceURL()
和javax.portlet.ResourceURL
创建资源映射的URL。
如果您更喜欢使用portlet taglibrary,还可以使用<portlet:resourceRequest>
标记生成资源URL。
您的观点可能看起来像这样
<强> myPortlet.jsp 强>
...
<script>
$.ajax({
url :${resourceUrl},
cache: false,
data:$('#myForm').formSerialize(),
dataType: "json",
type: "GET",
contentType: "application/json; charset=utf-8",
success: function(jsondata){
.........
.........
.........
}
});
</script>
...