我正在使用Wicket formpanel来允许webapp的管理员编辑用户帐户数据。有一个密码字段,管理员可以在其中为用户和其他帐户数据字段设置新密码。当我打开formpanel时,浏览器使用我在浏览器中保存的MY密码自动填写密码字段。默认情况下,此字段应留空。此外,浏览器在手机号码字段中插入我的用户名(“admin”)!
有没有办法通过更改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>
谢谢!
答案 0 :(得分:2)
以下代码将向您展示如何停用HTML表单的自动填充。我想这就是你需要的。但我不知道如何在Java中设置此值。 autocomplete="off"
是神奇的参数。
<form action="demo_form.asp" method="get" autocomplete="off">
First name:<input type="text" name="fname"><br>
E-mail: <input type="email" name="email"><br>
<input type="submit">
</form>
编辑:我在https://issues.apache.org/jira/browse/WICKET-1504找到了一些内容,但我不确定它是否有效。
newPassword.put("autocomplete", "off");
和用户名输入字段对象相同。