【发布时间】:2015-04-27 17:37:32
【问题描述】:
我有一个 jsf 页面和一个输入字段。当这个输入字段的事件被模糊时,我希望调用我的 ManagedBean 的方法 checkIfUsernameAvailable() 。然后应该渲染图像。问题是,无论我做什么,该方法要么永远不会被调用,要么就是找不到。那么有人可以告诉我应该怎么做吗? 我的代码在这里不起作用,显然是因为我从未在我的 jsf 中调用方法 checkIfUsernameAvailable。我确信答案很简单,但我尝试了很多,但我就是找不到。所以我在代码中删除了对这个方法的尝试调用,所以它没有错误。
在 f: ajax 上我放了
JSF:
<h:inputText id="username" required="true" value="#{subscribeUser.user.username}">
<f:ajax event="blur" render="usernameCheck"}"></f:ajax>
</h:inputText>
<h:panelGroup id="usernameCheck" >
<h:graphicImage value="resources/images/success_indicator.png" rendered="#{subscribeUser.isIndicatorVisible.usernameSuccess}">
</h:graphicImage>
<h:outputText id="usernameError" value="#{subscribeUser.isIndicatorVisible.usernameSuccess}"/>
</h:panelGroup>
所以您看到 subscribeUser.isIndicatorVisible.usernameSuccess 应该始终为 false。我希望当输入字段模糊时我会调用 checkIfUserAvailable() 这样它就会是真的,然后我的图像就会被渲染。
托管豆:
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 onevent>来调用支持bean 中的ajax 侦听器方法?哪个坏书/教程/资源以这种形式向您展示了一个示例?然后我可以就这个错误信息联系它的作者。 -
我认为在我阅读的教程中,onevent 是调用 javascript 函数,如果我没记错的话,这是正确的。我只是尝试它来调用一个bean函数,因为我只是没有找到在触发事件时如何调用该函数。你知道如何 ?说真的,已经过了一天,我只是不知道怎么做。
-
哪个教程?我很好奇为什么它没有显示在那里,因为它通常已经被 Hello World
<f:ajax>在一本理智的书/教程/资源中使用示例所涵盖。 -
slideshare.net/martyhall/… 第 64 页。正如我所说,它调用了一个 JAVASCRIPT 函数,我认为这是正确的。而且那里的 tuts 做得很好。
-
是的,Marty 通常会写出很棒的教程。太糟糕了,他在这个问题上完全忽略了
listener。我迟早会通知他的。