使用另一个新参数在servlet中调用jsp

时间:2015-12-27 08:41:55

标签: java ajax jsp servlets xmlhttprequest

我有一个jsp( items.jsp ),它迭代产品列表并显示结果产品。在其脚本中,让我迭代产品列表,如下所示:

<jsp:useBean id="items" scope="page" class="com.certus.controllers.ItemPage"/>

<%
  List<Product> products = null;

   //check if the parameter "sort" available or not
    if (request.getParameter("sort") != null) {
        System.out.print("Three parameter method");
        products = items.filterProducts(Integer.parseInt(request.getParameter("sub")),
                Integer.parseInt(request.getParameter("cat")),request.getParameter("sort"));
    } else {
        System.out.print("Two parameter method");
        products = items.filterProducts(Integer.parseInt(request.getParameter("sub")),
                Integer.parseInt(request.getParameter("cat")));
    }
    for (Product p : products) {
%>

  some html content here....

到目前为止,一切正常。在同样的jsp中,我有一个selectbox,我已经介绍了按照客户需要对产品进行排序。一旦我从selectbox中选择了一个项目,它就会向servlet发送一个请求,并且该ajax请求也没有任何问题。 (使用System.out.println()测试并从玻璃鱼切割器获得所需的结果。)

从病房那里我想出了一个问题。这是我的servlet:

     String category = request.getParameter("category");
        String sub = request.getParameter("sub_category");
        String sort = request.getParameter("sort");

//Tried with both methods but no luck
   //     response.sendRedirect("items.jsp?cat=" + category + "&sub="+ 
  //sub + "&sort=" + sort);

RequestDispatcher RequetsDispatcherObj = request.getRequestDispatcher("items.jsp?cat=" + category + "&sub=" + sub + "&sort=" + sort);
RequetsDispatcherObj.forward(request, response);

正如您所看到的,我尝试使用url(sort)中包含的另一个参数重定向到items.jsp,以调用items.jsp中的三个参数化方法。

欢迎所有的建议,弄清楚我犯了哪些错误。如果你需要我的ajax调用,它是:

<script type="text/javascript">
    $(document).on("change", "#sortCombo", function () {
        $.ajax({
            url: 'sortProducts',
            data: {category: $('#category').val(), sub_category: $('#sub_category').val(), sort: $('#sortCombo').val()},
            type: 'get',
            cache: false,
            success: function (data) {
               // alert(data);
                // $('#somediv').text(responseText);
            },
            error: function () {
                alert('error');
            }
        }
        );
    });
</script>

sortProducts是servlet的名称。还需要告诉你使用sort参数在url上写,刷新页面工作正常,并提供显示按名称,价格等级排序的产品所需的结果.. 谢谢。

更新

  

如果我可以通过写入URL来调用方法(三参数一)   为什么ajax响应与response.sendRedirect("items.jsp?cat=" + category + "&sub=" + sub + "&sort=" + sort); ???

一样

2 个答案:

答案 0 :(得分:0)

在Servlet中设置请求属性

在您的servlet中,您可以使用ServletRequest.setAttribute(String, Object)来创建请求属性;

String category = request.getParameter("category");
String sub = request.getParameter("sub_category");
String sort = request.getParameter("sort");
request.setAttribute("category", category);
request.setAttribute("sub_category", sub);
request.setAttribute("sort", sort);

在JSP中读取请求属性

然后您可以使用Expression Language Value Statements

在JSP中访问它们
${requestScope.category}
${requestScope.sub_category}

${requestScope.sort}

答案 1 :(得分:0)

最后,我想出了一个解决方案。可能不是最合适的一个。我将servlet代码更改为:

        response.getWriter().write(category+"-"+sub+"-"+sort);
//        RequestDispatcher RequetsDispatcherObj = request.getRequestDispatcher("items.jsp");
//        RequetsDispatcherObj.forward(request, response);

我的ajax success

success: function (data) {
   var split = data.split("-");
   document.location.href = "http://localhost:8080/ECommerceApp/items.jsp?cat=" + split[0] + "&sub=" + split[1] + "&sort=" + split[2];
                },

感谢所有帮助我甚至发表评论的人。这对我来说意义重大。 :)