我想在JavaServer页面上的表格中打印我的所有产品,但是我的jstl代码有问题。
我的型号产品:
public final class Product
{
private int id;
private String description;
private Double price;
private String categoryName;
...
我的JavaBean产品: (当创建这个bean时,它会填充我模型中的产品)
@ManagedBean(name = "productsBean")
@RequestScoped
public class Products implements Serializable {
private List<Product> producten;
@ManagedProperty(value = "#{applicationBean}")
private ApplicationBean applicationBean;
public Producten() {
Store store = applicationBean.getStore();
for (String c : store.getCategories()) {
for(model.Product p : store.getProductsOfCategory(c)){
beans.Product product = new Product();
product.setId(p.getId());
product.setDescription(p.getDescription());
product.setCategoryName(p.getCategoryName());
product.setPrice(p.getPrice());
producten.add(product);
}
}
}
我的JavaBean产品:
@ManagedBean(name= "productBean")
@RequestScoped
public class Product implements Serializable{
@ManagedProperty(value = "#{applicationBean}")
private ApplicationBean applicationBean;
private int product_id;
private String description;
private Double price;
private String categoryName;
在我的JavaServer页面中,我想要这样的东西,但是:
<c:forEach var="product" items="${productsBean.products}">
<tr>
<td>${product.description}</td>
</tr>
</c:forEach>
答案 0 :(得分:0)
遗留JSP表达式${}
如果在作用域中不存在,则不会自动创建JSF托管bean。您需要JSF表达式#{}
。更重要的是,您应该停止使用JSF页面中的旧JSP表达式${}
,以避免将来出现混淆和维护问题。 JSF表达式#{}
完全相同(即自动创建JSF托管bean并通过输入组件设置模型值)。
<table>
<c:forEach var="product" items="#{productsBean.products}">
<tr>
<td>#{product.description}</td>
</tr>
</c:forEach>
</table>
无关,您是否考虑过使用<h:dataTable>
?它可以避免摆弄松散的HTML <table>
,<tbody>
,<tr>
,<th>
和<td>
标记。
<h:dataTable value="#{productsBean.products}" var="product">
<h:column>#{product.description}</h:column>
</h:dataTable>
答案 1 :(得分:-1)
您是否导入了jsf jsf core和html
的TLD文件<f:view>
<h:form>
<h:dataTable value="#{productsBean.products}" var="product">
<h:column>#{product.description}</h:column>
</h:dataTable>
试试这样 感谢