项目情景:

当用户选择几个item之后,点击 查看 按钮之后, 页面跳转到展示items详情页面.

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

实现:

如果可以使用get请求, 直接在前端使用windows.loaction.href = "newUrl="xxx"&item=itemValue1&item=itemValue2"就行了

这样的问题是如果item比较多, 就有可能超出URL长度限制. 所以考虑用POST实现跳转.

server端:

public class MyServlet extends SlingAllMethodsServlet {
    @Override
    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
        String newUrl= request.getParameter("newUrl");
        RequestDispatcher dispatcher = request.getRequestDispatcher(newUrl);
        GetRequest getRequest = new GetRequest(request);
        dispatcher.forward(getRequest, response);
    }

    @Override
    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
        String selectedPagePath = request.getParameter("SelectedPagePath");
        response.sendRedirect(selectedPagePath);
    }

    /** Wrapper class to always return GET for AEM to process the request/response as GET.
     */
    private static class GetRequest extends SlingHttpServletRequestWrapper {
        public GetRequest(SlingHttpServletRequest wrappedRequest) {
            super(wrappedRequest);
        }

        @Override
        public String getMethod() {
            return "GET";
        }
    }
}

 

前端:

如果使用ajax提交请求,返回的将是新页面的html代码. 必须用form提交请求.

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄