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 پاسخ 952 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط aminiS (479 امتیاز)
+2 امتیاز
3 پاسخ 1.8هزار بازدید
0 امتیاز
0 پاسخ 363 بازدید
سوال شده 8 سال قبل در برنامه نویسی توسط crusader (97 امتیاز)
+1 امتیاز
1 پاسخ 997 بازدید
0 امتیاز
1 پاسخ 360 بازدید
0 امتیاز
1 پاسخ 960 بازدید
...