如果托管bean没有更新,如何在事件onblur上使用ajax验证字段[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果托管bean没有更新,如何在事件onblur上使用ajax验证字段[重复]相关的知识,希望对你有一定的参考价值。

通过丢失字段的焦点(id =“nome”)方法(listener =“#{loginMb.criticaCamposTela}”)被执行,但属性值(value =“#{loginMb.usuario.nome}”)不是在托管bean中更新,值为null。它不应该与验证的输入值一致吗?为什么是null?

遵循代码。

页:

<h:outputText value="Nome:" />
<p:inputText id="nome" value="#{loginMb.usuario.nome}"
    required="true" size="20" requiredMessage="Informação do nome é obrigatório.">
<p:ajax event="blur" update="idMsgNome, nome" partialSubmit="treu" process="@this"  
    immediate="true" listener="#{loginMb.criticaCamposTela}"></p:ajax>
</p:inputText>
<h:outputText id="idMsgNome" value="#{loginMb.criticaNome.value}" />

ManagedBean LoginMb:

public void criticaCamposTela(AjaxBehaviorEvent actionEvent) {
 String idComponenteTela = actionEvent.getComponent().getId();

if (idComponenteTela.equals("nome")) {

if ((this.usuario.getNome() == null)
  || ((this.usuario.getNome() != null) && (this.usuario
  .getNome().trim().length() == 0))) {

    this.criticaNome.setValue(new String(
       "O nome é um campo obrigatório."));
} else {
   this.criticaNome.setValue(new String(""));
}}

veb.hml:

<context-param>
<param-name>primefaces.SUBMIT</param-name>
<param-value>partial</param-value>
</context-param>
答案

尝试从immediate="true"中删除p:ajax。您的ajax在applay请求阶段处理,这就是您的字段未初始化的原因。

以上是关于如果托管bean没有更新,如何在事件onblur上使用ajax验证字段[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular2 上使用 onBlur 事件?

Input 控件的Onchange 与onBlur 事件区别?

react js中的window.onblur事件没有在android webview中被调用

onBlur事件不允许链接点击进行注册

如何在 Enzyme 中生成 blur 或 onBlur 事件?

React - 带有 onBlur 事件的 ul 阻止 onClick 在 li 上触发