2014-12-19 24 views
1

我一直在使用Saaripar的註解來驗證一些字段的內容片斷:Saripaar的@ConfirmPassword不工作

/** 
* Simple fragment used to register a new user 
*/ 
public static class FragmentRegister extends Fragment implements Validator.ValidationListener { 

    @InjectView(R.id.display_name_label) 
    TextView displayNameLabel; 

    @NotEmpty(messageResId = R.string.validation_not_empty) 
    @InjectView(R.id.display_name) 
    EditText displayName; 

    @InjectView(R.id.username_label) 
    TextView nameLabel; 

    @NotEmpty(messageResId = R.string.validation_not_empty) 
    @InjectView(R.id.username) 
    EditText username; 

    @InjectView(R.id.password_label) 
    TextView passwordLabel; 

    @InjectView(R.id.password) 
    @Password 
    @Size(min = 6, messageResId = R.string.validation_6_characters) 
    EditText password; 

    @InjectView(R.id.confirm_password_label) 
    TextView confirmPasswordLabel; 

    @InjectView(R.id.confirm_password) 
    @ConfirmPassword 
    EditText confirmPassword; 

    @InjectView(R.id.create_user_button) 
    Button createUserButton; 

    private Validator validator; 

    public FragmentRegister() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_register, container, false); 

     // Set up Saripaar validator 
     validator = new Validator(this); 
     validator.setValidationListener(this); 

     // Injecting views with ButterKnife 
     ButterKnife.inject(this, rootView); 

     return rootView; 
    } 

    ... 

    @Override 
    public void onDestroyView() { 
     super.onDestroyView(); 
     ButterKnife.reset(this); 
    } 

    // Injected view listeners 
    @OnClick(R.id.create_user_button) 
    public void createUser() { 
     validator.validate(); 
    } 

    // Saripaar callbacks 

    @Override 
    public void onValidationSucceeded() { 
     clearErrors(); 
     String dispName = displayName.getText().toString(); 
     String user = username.getText().toString(); 
     String pass = password.getText().toString(); 

     Controller.instance().register(user, dispName, pass); 
     getActivity().finish(); 
    } 

    @Override 
    public void onValidationFailed(List<ValidationError> errors) { 
     clearErrors(); 
     View view = null; 
     for (ValidationError error : errors) { 
      view = error.getView(); 
      if (view instanceof EditText) { 
       ((EditText) view).setError(error.getFailedRules().get(0).getMessage(getActivity())); 
      } 
     } 
     if(view != null) { 
      view.requestFocus(); 
     } 
    } 

    public void clearErrors() { 
     displayName.setError(null); 
     username.setError(null); 
     password.setError(null); 
     confirmPassword.setError(null); 
    } 
} 

@ConfirmPassword永遠不會奏效,它只是顯示了@Password領域的空白錯誤消息和「密碼不匹配「爲@ConfirmPassword。想知道會發生什麼?

回答

0

嘗試增加一條消息,確認密碼費爾德像

@InjectView(R.id.confirm_password) 
@ConfirmPassword(order = 6, message = "Password mismatch") 
EditText confirmPassword; 
+0

根本不工作。 – Eddnav 2014-12-19 12:10:16

+0

@喬治托馬斯,我相信這是關於Saripaar的2.0-SNAPSHOT版本。您正在使用同一個庫的v1。 – 2014-12-19 12:38:22

+0

我也認爲wats錯了!它對我的工作很好。 :) 可能是他會很快修復的 – 2014-12-19 12:39:38