【问题标题】:How validation field with ajax on event onblur, if managed bean is not updated [duplicate]如果未更新托管bean,如何在事件onblur上使用ajax验证字段[重复]
【发布时间】:2013-01-20 14:29:51
【问题描述】:

通过失去焦点字段 (id="nome") 方法 (listener="#{loginMb.criticaCamposTela}") 被执行,但属性值 (value="#{loginMb.usuario.nome}" ) 在托管 bean 中未更新,值为 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(""));
}}

web.xml:

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

【问题讨论】:

    标签: ajax jsf-2 primefaces


    【解决方案1】:

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

    【讨论】:

    • 谢谢。如果您不放置信息并更改到另一个字段(选项卡或鼠标),则不会发生事件(“onblur”)并且不会批评该字段。但是,如果我输入某些内容或输入空白,则会发生验证事件。你有什么想法吗???
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2016-04-27
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多