@demon123
developer

В чем может быть ошибка?

Здравствуйте, Выскакивает вот такое окошко, когда начинаешь вводить логин в inputText. При том, что валидация работает при вводе логина, но при каждом вводе символа выскакивает вот это окошко.
Понятно, что ошибка в ajax, а вот почему?

43afca6fd8cc4396929203c87d3ea3e8.PNG

Вот так выглядит код:
<table align="left" width="350">
                <tr>
		    <td>
                        <h:inputText id="username" value="#{user.username}" required="true" requiredMessage="#{}">
                            <f:validator validatorId="LoginValidator"/>
                            <f:ajax event="keyup" render="invalidLogin"/>
                        </h:inputText>
                    </td>
                        <td>
                            <h:commandButton ... />
                        </td>
		</tr>
                <tr>
		    <td colspan="3">
                        <p><h:message id="invalidLogin" for="username"/></p>
                    </td>
	        </tr>
</table>


@FacesValidator("LoginValidator")
public class LoginValidator implements Validator {
    @Override
    public void validate(FacesContext facesContext, UIComponent uiComponent, Object o) throws ValidatorException {

        ResourceBundle bundle = ResourceBundle.getBundle("itnls.messages", FacesContext.getCurrentInstance().getViewRoot().getLocale());
        try {
            String newValue = o.toString();

            if (newValue.length() < 5){
                throw new IllegalArgumentException(bundle.getString("login_length_error"));
            }

            if (!Character.isLetter(newValue.charAt(0))){
                throw new IllegalArgumentException(bundle.getString("first_letter_error"));
            }

            if (getTestArray().contains(newValue)){
                throw new IllegalArgumentException(bundle.getString("used_name"));
            }

        } catch (IllegalArgumentException e){
            FacesMessage message = new FacesMessage(e.getMessage());
            message.setSeverity(FacesMessage.SEVERITY_ERROR);
            throw new ValidatorException(message);
        }
    }

    private ArrayList<String> getTestArray(){
        ArrayList<String> list = new ArrayList<String>();
        list.add("username");
        return list;
    }


P.S: При вводе в гугл ошибку, результатов нет.
  • Вопрос задан
  • 255 просмотров
Решения вопроса 1
@demon123 Автор вопроса
developer
Вопрос решен. Проблема заключалась в несовместимости версии JSF и Glassfish. Спасибо!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
badprogrammist
@badprogrammist
Senior java developer
Но в ошибке же написано, что свойство size установлен в 0, что неверно. Приложите код вашего валидатора LoginValidator
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы