我正在開發一個用JSF和PrimeFaces添加/編輯產品價格的表單。單個產品可以有多個價格,具體取決於<p:dataTable>
中顯示的數量。如何在不驗證表單的情況下動態添加新行到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 」。但只有在表單有效的情況下(表單無效,如果沒有設置產品名稱)。
我的問題是,我有兩個commandButtons的窗體,但我不知道如何得到我希望的functionallity沒有commandButton。我嘗試了很多方法:使用ajax功能將「添加另一個價格」更改爲標準<p:button>
;由於按鈕的結果不起作用。我試過這個按鈕的「type = button」,但是在這種情況下根本沒有任何反應。
有沒有什麼建議可以實現我希望的功能?沒有必要有一個按鈕來解決我的問題。
就是這樣,謝謝! –
不客氣。 – BalusC