我有一个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);
???
答案 0 :(得分:0)
在您的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);
然后您可以使用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];
},
感谢所有帮助我甚至发表评论的人。这对我来说意义重大。 :)