【发布时间】:2012-09-24 19:41:10
【问题描述】:
我正在开发一个表单,用于使用 JSF 和 PrimeFaces 添加/编辑产品价格。单个产品可以有多个价格,具体取决于<p:dataTable> 中显示的数量。
支持 bean:
@ManagedBean
@ViewScoped
public class ProductBean {
protected Product product;
protected List<ProductPrice> productPrices;
public void addNewPrice() {
ProductPrice productPrice = new ProductPrice();
productPrice.setPrice(new BigDecimal(0));
this.productPrices.add(productPrice);
}
// ...
}
Facelet 页面:
<h:form id="productForm">
<p:inputText value="#{productBean.product.name}" required="true">
<f:ajax event="blur" render="nameMessage" />
</p:inputText>
<p:message id="nameMessage" for="name" />
<p:dataTable id="pricesList" ...>
</p:dataTable>
<p:commandButton value="Add another price" update="pricesList" action="#{productBean.addNewPrice()}" />
<p:commandButton value="Submit" action="#{productBean.submit}" />
</h:form>
第一个按钮“添加另一个价格”做了,它应该做的是:向“pricesList”添加一个新行。但仅当表单有效(如果未设置产品名称,表单无效)。
我的问题是,我有两个用于表单的命令按钮,但我不知道如何在没有命令按钮的情况下获得我想要的功能。我尝试了很多方法:将“添加另一个价格”更改为具有 ajax 功能的标准 <p:button>;由于按钮的结果而不起作用。我为这个按钮尝试了“type=button”,但在这种情况下根本没有任何反应。
是否有任何建议可以实现我想要的功能?不需要按钮来解决我的问题。
【问题讨论】:
标签: forms jsf primefaces