我正在使用Wicket窗体来允许webapp的管理员编辑用户帐户数据。有一个密码字段,管理员可以为用户和其他帐户数据字段设置新密码。当我打开窗体时,浏览器使用我保存在浏览器中的密码自动填充密码字段。默认情况下,此字段应保留为空白。此外,浏览器在手机号码的字段中插入我的用户名(“admin”)!浏览器在Wicket窗体中自动填充错误的字段
有没有一种方法,以避免改变formfield的代码这种行为?例如禁止自动填充或类似的东西? 下面是相关的代码部分:
mobile = new TextField<String>("mobile");
mobile.add(PhonenumberValidator.getInstance());
mobile.setOutputMarkupId(true);
addToForm(new FencedFeedbackPanel("mobileCfp", mobile));
addToForm(mobile);
generatedPassword = new GeneratedPasswordLabelPanel("generatedPassword");
generatedPassword.setOutputMarkupId(true);
generatePassword = new IndicatingAjaxLink<Void>("generatePassword"){
private static final long serialVersionUID = 6759645521399346111L;
@Override
public void onClick(AjaxRequestTarget target) {
generatedPasswordString = PasswordGenerator.generatePassword(8);
generatedPassword.setPasswordString(generatedPasswordString);
target.add(generatedPassword);
}
};
newPassword = new PasswordTextField("newPassword");
newPassword.add(PasswordValidator.getInstance());
newPassword.setOutputMarkupId(true);
newPassword.setModel(new Model<String>());
newPassword.setRequired(false);
newPassword.setResetPassword(true);
newPassword.add(new RequiredLabelBehavior());
confirmPassword = new PasswordTextField("confirmPassword");
confirmPassword.setOutputMarkupId(true);
confirmPassword.setModel(new Model<String>());
confirmPassword.setRequired(false);
confirmPassword.setResetPassword(true);
confirmPassword.add(new RequiredLabelBehavior());
pwContainer = new WebMarkupContainer("pwContainer");
pwContainer.add(confirmPassword);
pwContainer.add(newPassword);
pwContainer.add(generatePassword);
pwContainer.add(generatedPassword);
pwContainer.add(new FencedFeedbackPanel("newPasswordCfp", newPassword));
pwContainer.add(new FencedFeedbackPanel("confirmPasswordCfp", confirmPassword));
pwContainer.setVisible(ajax);
addToForm(pwContainer);
这是Wicket的HTML代码:
<?xml version="1.0" encoding="UTF-8"?>
<div wicket:id="emailCfp" />
<input wicket:id="email" type="text" />
<div class="brclear"></div>
<select wicket:id="account.salutation" />
<div class="brclear"></div>
<input wicket:id="title" type="text" style="width:100px" />
<div class="brclear" />
<div wicket:id="firstnameCfp" />
<input wicket:id="firstname" type="text" />
<div class="brclear"></div>
<div wicket:id="lastnameCfp" />
<input wicket:id="lastname" type="text" />
<div class="brclear"></div>
<div wicket:id="phoneCfp" />
<label><wicket:message key="phone" /></label><input wicket:id="phone" type="text" />
<div class="brclear"></div>
<div wicket:id="birthday" />
<div class="brclear" />
<div wicket:id="mobileCfp" />
<label><wicket:message key="mobile" /></label><input wicket:id="mobile" type="text" />
<div class="brclear"></div>
</fieldset>
<fieldset wicket:id="imageContainer">
<legend><wicket:message key="legend.picture" /></legend>
<div>
<img style="float: left; margin: 0px 5px 5px 0px;" wicket:id="userImage" />
<br />
<span wicket:id="blob"></span>
</div>
</fieldset>
<fieldset wicket:id="pwContainer">
<legend><wicket:message key="legend.pw" /></legend>
<input type="button" wicket:id="generatePassword" wicket:message="value:generatePassword" />
<div style="float:left;">
<div wicket:id="generatedPassword" />
</div>
<div class="brclear"></div>
<div wicket:id="newPasswordCfp" />
<input wicket:id="newPassword" type="password" />
<div class="brclear"></div>
<div wicket:id="confirmPasswordCfp" />
<input wicket:id="confirmPassword" type="password" />
<div class="brclear"></div>
</fieldset>
<wicket:child />
</wicket:extend>
谢谢!
在这种情况下,HTML代码可能更有帮助,因为浏览器将无法访问您的Java代码。 我认为,自动填充的textfields将具有名称=“密码”或“用户名”,因此会自动填充。 – Seega
请接受答案或写评论。 – Seega