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

Calling jsp inside a servlet with another new parameter

我有一个 jsp (items.jsp) 迭代产品列表并显示结果 products.In 它的脚本让我迭代产品列表如下:

<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....

到这个阶段一切正常 fine.In 同样 jsp 我有一个 select 盒子,我已经引入它来根据客户需要对产品进行分类。一旦我从 select 框中 select 一个项目,它就会向 servlet 发送一个请求,并且那个 ajax 请求也没有错。 (使用 System.out.println() 进行测试,并从 glass-fish 服务器获得了所需的结果。)

从那时起,我想到了一个问题。这是我的 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(排序)中包含的另一个参数重定向到 items.jsp,以调用 [=] 中的三个参数计量方法37=].

欢迎大家多多指教,找出我错在哪里。如果您需要我的 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 名称。 并且还需要告诉您在 url 上写上排序参数并刷新页面工作正常并给出所需的结果显示产品按名称、价格等级等排序。 谢谢。

更新

If I can call the method(Three parameter one) by writing on the URL why not the ajax response do the same with response.sendRedirect("items.jsp?cat=" + category + "&sub=" + sub + "&sort=" + sort); ???

在 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

中的请求属性

然后您可以在您的 JSP 中使用 Expression Language Value Statements 访问它们

${requestScope.category}
${requestScope.sub_category}

${requestScope.sort}

最后,我想出了一个解决办法。可能不是最合适的。我将 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];
                },

感谢每一位帮助我的人,即使 comment.They 对我来说意义重大。 :)