我正在开发一种使用 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”添加一个新行。但仅当表单有效(如果未设置产品名称,表单无效)。
我的问题是,我有两个用于表单的命令按钮,但我不知道如何在没有命令按钮的情况下获得我想要的功能。我尝试了很多方法:将“添加另一个价格”更改为<p:button>
具有 ajax 功能的标准;由于按钮的结果而不起作用。我为此按钮尝试了“type = button”,但在这种情况下,根本没有任何反应。
是否有任何建议可以实现我想要的功能?没有必要有一个按钮来解决我的问题。