<h:inputText id="quantity"
value="#{_cartItem.quantity}" required="true" size="3"
maxlength="3">
<f:converter converterId="ValueConverter" />
<f:validateLongRange minimum="0" maximum="999" />
<a:support event="onchange"
ajaxSingle="true"
action="#{cSession.userCheckQuantity(_cartItem, index)}"
reRender="minicartAjax, shoppingCartAjax, orderTotalAjax"></a:support>
当您单击数量输入框时,很容易触发userCheckQuantity方法。但如果我输入一个数字并快速按下键盘上的输入键,则会错过验证。
如何获得Enter键验证方法呢?如果我需要提供更多代码,请告诉我。
答案 0 :(得分:0)
您正在通过Ajax进行验证。这不够强大。您需要将action="#{cSession.userCheckQuantity(_cartItem, index)}"
替换为与<f:validator>
绑定到输入组件的完全Validator
实现。这样,无论是由更改还是表单提交触发,都将始终进行验证。
在Validator
实施中,您可以从_cartItem
获取index
和FacesContext
。具体取决于它们的存储位置以及您正在使用的JSF规范版本。如果它们例如存储为请求属性,则可以使用ExternalContext#getRequestMap()
来获取它们。