私はWebアプリケーションにプライムフェイスを使用しています.アクションリスナーを備えたプライムフェイスコマンドボタンを持っているというこの問題があります.そのボタンをクリックするとactionListenerが起動しません.
<p:dataTable var="car" value="#{cart.cartItems}" rendered="#{not empty cart.cartItems}">
<p:columnGroup type="footer">
<p:row>
<p:column colspan="3" footerText="Wallet Balance (#{cart.displayWalletAmount}) " style="text-align:right" />
<p:column>
<p:panel id="walPayPanel">
<p:inputText value="#{cart.payWalletAmount}" maxlength="7" size="5" id="walAmount" />
<p:spacer width="10" />
<p:commandButton actionListener="#{cart.updateTotalAmount}" update="totPay,totPaybel" id="iconOnly" title="update" icon="ui-icon-refresh" />
</p:panel>
</p:column>
</p:row>
<p:row>
<p:column colspan="3" footerText="Total Payble: " style="text-align:right" />
<p:column><p:panel id="totPay"><h:outputText id="totPaybel" value="#{cart.totalPayble}"/></p:panel> </p:column>
</p:row>
</p:columnGroup>
</p:dataTable>
これは Bean 内の関連コードであり、
public void updateTotalAmount() {
log.info("Entering updateTotalAmount()");
log.info("Pay wallet Amount : "+payWalletAmount);
// Double total = getCartTotal();
if (payWalletAmount < 0.0) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
"Wallet Amount cannot be a minus value", null);
FacesContext.getCurrentInstance().addMessage(null, message);
} else if (payWalletAmount > (walletAmount)) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
"Wallet amount cannot be exceeded the available balance", null);
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
興味深いことに、コマンド ボタンの上にデータ テーブルの外に配置すると、アクション リッスンが起動されます。bean メソッドに Actionevent パラメータを追加しても動作しません。誰かがこの問題を解決する方法を教えてもらえますか? コマンド ボタンをデータ テーブルまたは columnGroup の外に移動せずにこれを行うことはできますか?