我正在创建一个按钮或链接,以便在有人搜索产品后将产品添加到购物车中。下面是我们的productscontroller .java类中的部分:
public String getResponse() {
String resultStr = "";
resultStr += theModel.getProductID() + "<br/>"
+ theModel.getUserID() + "<br/>"
+ theModel.getTitle() + "<br/>"
+ theModel.getProductType() + "<br/>"
+ theModel.getProductDesc() + "<br/>"
+ theModel.getRating() + "<br/>"
+ theModel.getPictureURL() + "<br/>"
+ theModel.getPrice() + "<br/>";
response = resultStr;
return response;
}
public String searchProduct() {
ProductsDAO aProductDAO = new ProductsDAOImpl(); // Creating a new object each time.
ArrayList products = aProductDAO.searchProduct(theModel);
response = "";
for (int i=0; i < products.size(); i++) {
theModel = (ProductsBean)products.get(i);
response += getResponse();
}
theModel.setSearchResult(response);
return "searchResults.xhtml"; // navigate to "searchResults.xhtml"
}
现在它表现得和它看起来一样糟糕。我对JSF非常陌生(在我们的课程中使用的是2.1版本),并且使用过ASP。. NET学习类似的课程。我最初的想法,我认为违反了BalusC关于"h:commandLink/h:commandButton未被调用"的评论中的第2条规则,是在response += getResponse()之后添加用于调用产品控制器中的方法addToCart()的commandButton的JSF代码。它在相应的搜索结果旁边显示按钮,但不运行#{cartController.addToCart()}方法。
我查看了数据表,如BalusC对"JSF数据表内的JSF命令按钮"的评论。基本上这可以归结为两个问题:
- 我们是否应该尝试数据表来显示我们的数据,并在列中使用"添加到购物车"按钮?我是否能够将其绑定到特定产品ID的addToCart()方法?我问"应该"是因为我们是JSF的新手,这可能超出了我们的理解范围。
- 我的第一个解决方案可行吗?我们可以在字符串中动态地创建可行的JSF表单按钮吗? 有没有比我们尝试的更简单的方法?
非常感谢任何帮助。我们目前使用的是JSF 2.1。
我们能够在我提供的链接中通过查看BalusC上面的注释来实现数据表。只要我们做了一些试验/错误,它就能很好地运行。