0 امتیاز
قبل در کامپیوتر و اینترنت توسط (308 امتیاز)
ویرایش شده قبل توسط

با استفاده از annotation یک validate Bean برای کامپوننتم تعریف کردم که وقتی فوکوس به عنصر دیگری از صفحه می ورد مقدار کامپوننت را چک می کند که مانند آن در دیتابیس نباشد این کار را انجام می دهد ولی وقتی مقدار کامپوننت را تغییر می دهم باز هم خطا بر روی صفحه است و صفحه submit نمی شود

 public List<User> getUsers1() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        userList = session.createCriteria(User.class).list();
        session.close();
        return userList;
    }

و...

public class CheckUniqueValidation implements ConstraintValidator<CheckUnique, String> {

    static List<User> userList;
    static boolean unique = true;

    public List<User> getUserList() {
        return userList;
    }

    public void setUserList(List<User> userList) {
        CheckUniqueValidation.userList = userList;
    }

    @Override
    public void initialize(CheckUnique constraintAnnotation) {
         
    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
         return checkUnique(value);
    }

    private static boolean checkUnique(String username) {
        UserManagedBean umb = new UserManagedBean();
        userList = umb.getUsers1();
        for (User user : userList) {
            if (user.getUsername().equals(username)) {
               unique = false;
               
            }
        }
       
    return unique;
        
    }
}

و...

 

 <h:inputText value="#{users.username}" id="username" label="نام کاربری" required="true" requiredMessage="نام کاربری را وارد کنید" >
                    <f:ajax event="blur" execute="@this" render="userError"/>
                </h:inputText>
                <h:message for="username" id="userError"/>

و..

@Target({METHOD,FIELD})
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = CheckUniqueValidation.class)
public @interface CheckUnique {
    String message() default"نام کاربری قبلا ایجاد شده است";
    Class[] groups() default{};
    Class<? extends Payload>[] payload() default{};
}

 

سوالات مشابه

0 امتیاز
2 پاسخ 828 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط aminiS (479 امتیاز)
+2 امتیاز
3 پاسخ 1.6هزار بازدید
0 امتیاز
0 پاسخ 232 بازدید
سوال شده 7 سال قبل در برنامه نویسی توسط crusader (97 امتیاز)
+1 امتیاز
1 پاسخ 834 بازدید
0 امتیاز
1 پاسخ 769 بازدید
...