Java - Spring - portlet API @Controller如何读取ajax参数

时间:2013-07-17 18:35:51

标签: java spring portlet spring-portlet-mvc

我有跟随多个参数的最新jquery v aajx调用。

在java代码中,我只能得到第一个参数值,其余的找到了null。

$.ajax({
        url : '<portlet:resourceURL id="entitledRequest"/>',
        data: '<c:out value="pfx= ${account.accountNumber}-${outletUI.outlet}-${count}&acc=${account.accountNumber}" />',
        cache: false,
        success : function(result) {

            //targetElem.html(result); update uI

        }
    });

以下是我的java代码只有第一个参数不为null之后所有params都为null,我有调试http请求所有参数都存在于请求对象中任何线索什么错在这里?

Controller("ajaxRequestController")
@RequestMapping(value = "VIEW")
public class AjaxRequestController implements PortletConfigAware  {


@ResourceMapping("entitledRequest")
    public void getServiceAutoComplete(ResourceRequest request, ResourceResponse response) throws IOException {


            String elemPrefix = request.getParameter("pfx");
            String acc = request.getParameter("acc"); // found null
            String mac = request.getParameter("mac"); // found null

}...

1 个答案:

答案 0 :(得分:2)

使用@RequestParam注释来阅读参数。

@ResourceMapping("entitledRequest")
public void getServiceAutoComplete(@RequestParam("pfx")  String elemPrefix, @RequestParam  String acc, @RequestParam String mac, ResourceRequest request, ResourceResponse response) throws IOException {

}

原因:

Parameters发送的Ajax不属于PortletNamespace。因此,它们不属于ResourceRequest,但可以在普通HTTPServletRequest中找到它们。 Spring会搜索@RequestParam中的HTTPServletRequest个名称。

您可以使用我建议的方法 - 或者 - 您可以在<portlet:namespace/>调用中将Ajax添加到参数中,以保持Controller代码的完整性。