WicketでPasswordTextField passwordにValidatorを設定するには、次のようにしますが、
//ASCIIコードのみ入力可 password.add(new PatternValidator("[\\u0020-\\u007E]+"))
少し複雑な値の検証を行うには、Validatorを新しく作る必要があります。
例えば、Shift_JISの1Byte文字だけを可にするには、
public class PasswordValidator implements IValidator{ PasswordValidator() { } @Override public void validate(IValidatable validatable) { final String password = validatable.getValue(); // validate password if (!checkPassword(password)) { // Message from key "StrongPasswordValidator.not-strong-password" error(validatable, "not-strong-password"); } } private void error(IValidatable validatable, String errorKey) { ValidationError error = new ValidationError(); error.addMessageKey("パスワードは半角英数字または半角記号で入力してください。"); validatable.error(error); } private boolean checkPassword(String value) { int length = value.length(); for (int i1 = 0; i1 < length; i1++) { if (!is1Byte(value.charAt(i1))) { // 1Byte文字以外を含んでいる return false; } } return true; } /** * 1Byte文字かどうかを返します * * @param ch * @return */ private boolean is1Byte(char ch) { byte[] chars; try { chars = (Character.valueOf(ch).toString()).getBytes("shift_jis"); } catch (UnsupportedEncodingException ex) { return false; } if (chars.length == 2) { // 全角文字 return false; } return true; } }
のようにします。
詳しくはこちら http://www.mkyong.com/wicket/create-custom-validator-in-wicket/
http://wicket.apache.org/guide/guide/forms2.html
http://hondou.homedns.org/pukiwiki/pukiwiki.php?Wicket%20Validator%A4%F2%BA%EE%A4%EB