JSF ajax 事件改变值
JSF ajax event to change value
我正在尝试使用 JSF ajax 请求更改输入值。
我有那个 JSF 代码:
<h:inputSecret id="pwd" value="#{info.password}" redisplay="true">
<f:ajax event="focus" listener="#{info.changePassword}" />
</h:inputSecret>
并且info
bean 包含:
public String getPassword() {
return "";
}
public void changePassword(AjaxBehaviorEvent e) {
UIInput input = (UIInput)e.getComponent();
input.setValue(createRandomPassword());
}
createRandomPassword()
创建短的随机字符串。
但是当输入获得焦点时,我可以看到调用了 changePassword
函数并设置了一些随机字符串,但输入的值保持为空。
那么为什么setValue
不给组件设置值呢?我怎样才能让它发挥作用?
您需要在设置其值后重新渲染密码输入组件,使用
的渲染属性
<h:inputSecret id="pwd" value="#{info.password}" redisplay="true">
<f:ajax event="focus" listener="#{info.changePassword}" render="pwd"/>
</h:inputSecret>
我正在尝试使用 JSF ajax 请求更改输入值。
我有那个 JSF 代码:
<h:inputSecret id="pwd" value="#{info.password}" redisplay="true">
<f:ajax event="focus" listener="#{info.changePassword}" />
</h:inputSecret>
并且info
bean 包含:
public String getPassword() {
return "";
}
public void changePassword(AjaxBehaviorEvent e) {
UIInput input = (UIInput)e.getComponent();
input.setValue(createRandomPassword());
}
createRandomPassword()
创建短的随机字符串。
但是当输入获得焦点时,我可以看到调用了 changePassword
函数并设置了一些随机字符串,但输入的值保持为空。
那么为什么setValue
不给组件设置值呢?我怎样才能让它发挥作用?
您需要在设置其值后重新渲染密码输入组件,使用
的渲染属性<h:inputSecret id="pwd" value="#{info.password}" redisplay="true">
<f:ajax event="focus" listener="#{info.changePassword}" render="pwd"/>
</h:inputSecret>