@Component
@Scope("view")
public class ProductPriceBean {
@Autowired
private ProductPriceDAO productPriceDAO;
public void saveProductPrice(ProductPrice productPrice){
productPrice=productPriceDAO.save(productPrice);
// save アクションによって返される productPrice は新しいオブジェクトです }
}
JSF:
<p:dataTable var="price" value="#{product.prices}" editable="true">
<p:ajax event="rowEdit"
listener="#{productPriceBean.saveProductPrice(price)}"
update=":form:messages" />
<p:column headerText="Price">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{price.price}" >
<f:convertNumber type="currency" currencyCode="GBP"/>
</h:outputText>
</f:facet>
<f:facet name="input">
<p:inputText value="#{price.price}" >
<f:convertNumber type="currency" currencyCode="GBP"/>
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<p:rowEditor />
</p:column>
</p:dataTable>
これは 1 回目は正常に機能しますが、2 回目は古い製品の例外が発生します。新しい製品でデータテーブルを更新するにはどうすればよいですか?
なるほど。