<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>
当您单击Quantity输入框时,userCheckQuantity方法很容易被触发。但是如果我输入一个数字并快速按下键盘上的回车键,验证就会被忽略。
我如何让回车键方法也验证?让我知道,如果我需要提供更多的代码。
您正在专门通过Ajax进行验证。这还不够稳健。您需要将action="#{cSession.userCheckQuantity(_cartItem, index)}"
替换为完整的Validator
实现,并将其绑定到输入组件作为<f:validator>
。通过这种方式,验证将始终发生,无论它是由更改还是表单提交触发的。
在Validator
实现中,您可以从FacesContext
中获得_cartItem
和index
。具体如何取决于它们存储的位置以及您使用的JSF规范版本。例如,如果它们作为请求属性存储,则可以使用ExternalContext#getRequestMap()
来获取它们。