SpringBoot& Bootsfaces:无法调用方法getOnblur

时间:2016-08-09 08:11:47

标签: spring-boot onblur bootsfaces

我想使用onblur功能处理inputSecret的值但我得到错误无法调用方法getOnblur

<b:column span="3">
     <p:outputLabel value="#{msg.confirmPassword}" />
     <b:inputSecret value="#{workerDetail.confirmPassword}" onblur="#{workerDetail.checkPassword}"/>
</b:column>

这是支持bean的方法:

public void checkPassword(AjaxBehaviorEvent event)
{
    System.out.println(confirmPassword);
}

我该如何解决?

1 个答案:

答案 0 :(得分:1)

BootsFaces采用与其他JSF框架略有不同的AJAX方法。我们的想法是简单地使用JavaScript回调函数来调用Java后端bean中的方法。但是,我们还希望保持与其他JSF框架的兼容性,因此我们无法按照您的方法进行操作,因为它可能具有诱惑力。相反,我们决定在AJAX调用之前加上bulkWrite前缀。接下来是一个EL表达式,它也定义了参数列表。换句话说:除了标准JSF之外,BootsFaces不会传递事件参数。

TL; DR: 只需像这样更改ajax:属性:

onblur

请注意<b:column span="3"> <p:outputLabel value="#{msg.confirmPassword}" /> <b:inputSecret value="#{workerDetail.confirmPassword}" onblur="ajax:workerDetail.checkPassword()"/> </b:column> 后面的括号。它是一个EL表达式,在事件被触发并发送到Java后端时执行。

生成的辅助bean方法不需要事件参数:

checkPassword

您的方法的不同之处在于,在呈现页面时评估了您的EL表达式 - 这有点早。