我正在实施简单的注册表单。带有输入和标签的表格放在 p:对话框中,该页面位于 h:form 中。其中一项功能是自动生成字母数字密码。我想在点击同一表格中的按钮后更新密码 p:inputText 的值。每次按下按钮时都会调用生成方法(我可以在控制台日志中看到生成的字符串)。该问题与inputText标记有关,该标记未正确更新。打开对话框后,我只能刷新一次密码inputText,下次触发方法但不更新inputText。代码如下:
字母数字密码生成器方法:
public static String randomPassword(){
return RandomStringUtils.randomAlphanumeric(PASSWORD_LENGTH);
}
新帐户模式:
@Named
@ViewScoped
public class AccountModel implements Serializable {
private Account Account = new Account();
public Account getAccount() {
return account;
}
public void setAccount(Account account) {
this.account = account;
}
}
ViewScoped AddUserBean中的密码修复方法:
public void generateRandomPassword() {
accountModel.getAccount().setPassword(PasswordGenerator.randomPassword());
LOGGER.info(MessageFormat.format("Random password generated: {0}", accountModel.getAccount().getPassword()));
}
JSF表格摘要:
<p:column>
<p:inputText id="userPassword" value="#{accountModel.account.password}" styleClass="fullWidth" />
</p:column>
<p:column>
<p:commandButton id="randomPasswordButton" update="userPassword">
<p:ajax event="click" listener="#{addUserBean.generateRandomPassword}" update="userPassword" />
</p:commandButton>
</p:column>
问题是:我应该使用什么样的更新来正确输入密码文本刷新(每次按下按钮,不仅一次)?