JSFとPrimeFacesで商品価格を追加・編集するフォームを開発しています。に示されているボリュームに応じて、1 つの製品に複数の価格が設定される場合があり<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>
最初のボタン「別の価格を追加」は、本来の目的である「priceList」に新しい行を追加します。ただし、フォームが有効な場合のみ (product-name が設定されていない場合、フォームは無効です)。
私の問題は、フォームに2つのコマンドボタンがあることですが、コマンドボタンなしで目的の機能を取得する方法がわかりません。私は多くの方法を試しました:「別の価格を追加」を<p:button>
ajax機能を備えた標準に変更します。ボタンの結果が原因で機能しません。このボタンに「type=button」を試してみましたが、この場合は何も起こりません。
希望する機能を実現するために必要な提案はありますか? 私の問題を解決するボタンは必要ありません。