Я использую основное лицо для веб-приложения, у меня есть эта проблема: у меня есть основная кнопка управления лицом с прослушивателем действий, когда я нажимаю эту кнопку, 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>
И это соответствующий код в бине,
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);
}
}
Интересно, что если я поместил выше командную кнопку вне таблицы данных, действие прослушивания будет запущено. Даже если я добавлю параметр Actionevent в метод bean, это не сработает. Может кто-нибудь сказать мне, как я могу решить эту проблему? Можно ли это сделать, не перемещая командную кнопку за пределы таблицы данных или группы столбцов?
javax.servlet.ServletException: Cannot find component with identifier ":totPay" referenced from "confirmForm:j_idt57:iconOnly".
06.12.2012<h:form id="confirmForm"><p:dataTable var="c" value="#{cart.cartItems}"><p:column><h:outputText value="#{c.itemPrice}" /></p:column><p:columnGroup><p:row><p:column colspan="3"/><p:column><p:panel id="walPayPanel"><p:inputText value="#cart.payWalletAmount}" id="walAmount"/><p:commandButton actionListener="#{cart.updateTotalAmount()}" id="iconOnly" title="update"/></p:panel></p:column></p:row><p:row><p:column colspan="3"/><p:column><p:panel id="totPay"><h:outputText id="totPaybel" value="#{cart.totalPayble}"/></p:panel></p:column></p:row></p:columnGroup></p:dataTable></div></h:form>
06.12.2012@ManagedBean(name="cart") @SessionScoped public class ShoppingCartServiceBean implements Serializable{ private List<RestCartItem> cartItems; private String transactionFee, totalFee,displayWalletAmount; private Double cartTotal,totalPayble,walletAmount,payWalletAmount,tot,trnsFee = 0.0; public void updateTotalAmount() { log.info("Entering updateTotalAmount()"); //some code here } }
06.12.2012