onchange处理数量框验证,为什么Enter键通过


<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中获得_cartItemindex。具体如何取决于它们存储的位置以及您使用的JSF规范版本。例如,如果它们作为请求属性存储,则可以使用ExternalContext#getRequestMap()来获取它们。

相关内容

  • 没有找到相关文章

最新更新