试图通过OneEvent=";调用ajax侦听器方法#{checkIfUsernameAvailable}";

试图通过OneEvent=";调用ajax侦听器方法#{checkIfUsernameAvailable}";,ajax,jsf,jsf-2,Ajax,Jsf,Jsf 2,我有一个jsf页面和一个输入字段。当此输入字段模糊时,我希望调用ManagedBean的checkIfUsernameAvailable()方法。然后应该渲染图像。问题是,无论我做什么,该方法要么从未被调用,要么就是找不到。有人能告诉我该怎么做吗? 我这里的代码不起作用,显然是因为我从未调用jsf中可用的checkifUsername方法。我相信答案很简单,但我尝试了很多,却没有找到答案。因此,我在代码中删除了对此方法的尝试调用,因此它没有错误 在我提出的f:ajax上 JSF: 您需要侦听器

我有一个jsf页面和一个输入字段。当此输入字段模糊时,我希望调用ManagedBean的checkIfUsernameAvailable()方法。然后应该渲染图像。问题是,无论我做什么,该方法要么从未被调用,要么就是找不到。有人能告诉我该怎么做吗? 我这里的代码不起作用,显然是因为我从未调用jsf中可用的checkifUsername方法。我相信答案很简单,但我尝试了很多,却没有找到答案。因此,我在代码中删除了对此方法的尝试调用,因此它没有错误

在我提出的f:ajax上

JSF:



您需要
侦听器
属性

<f:ajax event="blur" listener="#{subscribeUser.checkIfUsernameAvailable()}" render="usernameCheck"}" />

您到底从哪里了解到应该使用
在支持bean中调用ajax侦听器方法?哪本坏书/教程/资源以这种形式向您展示了一个示例?我想在我阅读的教程中,OneEvent是调用javascript函数的,如果我没有错的话,这是正确的。我只是尝试调用一个bean函数,因为我没有找到在触发事件时如何调用该函数。你知道怎么做吗?说真的,已经一天了,我就是不知道该怎么做。哪个教程?我很好奇为什么它没有显示在那里,因为在一本理智的书/教程/资源中,Hello World
使用示例通常已经介绍了这一点。第64页。正如我所说,它调用了一个JAVASCRIPT函数,我认为这是正确的。那里的图坦卡门做得很好。是的,马蒂通常写很棒的教程。可惜他完全忽略了这一点。我迟早会通知他的。非常感谢您提供的解决方案以及有关验证器的信息。我去看看,不客气。既然你是新来的,别忘了在对理解和解决具体问题最有帮助的时候,把答案标注为“接受”。另请参阅不要忘记在适用的情况下对进行同样的操作。如果没有一个是适用的,并且你已经自己找到了答案,那么你有义务发布并接受你自己的答案。顺便说一句,我发现你的第二个解决方法更容易在你给我的链接上找到。只是想让你知道。接受答案。对于初学者来说,这确实更容易(尤其是那些从未通过基础Java教程学习过创建自定义注释的人,因此几乎不理解此类自定义注释中的任何内容)。但是标准的JSF验证器也是以JSF为中心的,在JSF之外不可重用,而Bean验证注释在JSF之外是可重用的(例如,在JPA中,甚至在“普通的”JavaSE中)。顺便说一句,我遵循了你所做的,它是有效的。但奇怪的是,在我的jsf中,我必须输入validator=“#{beanValidator.validate}”,而在您的示例中,您不必输入validate方法,只需输入beanValidator名称。我的代码有问题吗?既然它起作用了,这有关系吗?或者你的代码中有错误。。。不要试图粗鲁,因为你是现在向我解释事情的人。
public class SubscribeUser {
    private User user;
    private Map<String, Boolean> isIndicatorVisible;

    @EJB
    Userpersistence up;

    public SubscribeUser() {
        this.user = new User();
        this.isIndicatorVisible = new HashMap<>();
        this.isIndicatorVisible.put("usernameSuccess", false);
       //...
    }

    public void checkIfUsernameAvailable() {
        this.isIndicatorVisible.replace("usernameSuccess", true);
    }
//getters & setters
}
<f:ajax event="blur" listener="#{subscribeUser.checkIfUsernameAvailable()}" render="usernameCheck"}" />