尝试通过 onevent="#{checkIfUsernameAvailable}" 调用 ajax 侦听器方法
Trying to call ajax listener method via onevent="#{checkIfUsernameAvailable}"
我有一个 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 应该总是错误的。我希望当输入字段模糊时我会调用 checkIfUserAvailable() 这样它就会是真的然后我的图像就会被渲染。
ManagedBean:
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
}
您需要 listener
属性。
<f:ajax event="blur" listener="#{subscribeUser.checkIfUsernameAvailable()}" render="usernameCheck"}" />
另请参阅:
顺便说一句,验证通常由普通验证器完成,而不是操作方法。但我想你仍然需要了解那部分。
另请参阅:
- JSF 2.0 validation in actionListener or action method
我有一个 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 应该总是错误的。我希望当输入字段模糊时我会调用 checkIfUserAvailable() 这样它就会是真的然后我的图像就会被渲染。
ManagedBean:
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
}
您需要 listener
属性。
<f:ajax event="blur" listener="#{subscribeUser.checkIfUsernameAvailable()}" render="usernameCheck"}" />
另请参阅:
顺便说一句,验证通常由普通验证器完成,而不是操作方法。但我想你仍然需要了解那部分。
另请参阅:
- JSF 2.0 validation in actionListener or action method