Пользовательская ошибка проверки не работает должным образом - PullRequest
0 голосов
/ 01 мая 2011

Я хочу проверить поле, чтобы иметь возможность принимать значения только между 1 и 100. Это работает нормально, но когда я пишу что-то, что не является целым числом, я не вижу ожидаемого сообщения.

Это поле:

<h:inputText id="discountPercentage" value="#{newOfferSupportController.discountPercentage}" validator="#{newOfferSupportController.validateDiscountPercentage}"/>
            <span style="color: red;"><h:message for="discountPercentage"
                showDetail="true" /></span>

Это метод проверки:

public void validateDiscountPercentage(FacesContext context,
            UIComponent validate, Object value) {
        FacesMessage msg = new FacesMessage("");
        String inputFromField = "" + value.toString();
        String simpleTextPatternText = "^([1-9]|[1-9]\\d|100)$";
        Pattern textPattern = null;
        Matcher productValueMatcher = null;
        textPattern = Pattern.compile(simpleTextPatternText);
        productValueMatcher = textPattern.matcher(inputFromField);

        if (!productValueMatcher.matches()) {
            msg = new FacesMessage("Only values between 1 and 100 allowed");
            throw new ValidatorException(msg);
        }

        for (int i = 0; i < inputFromField.length(); i++) {
            // If we find a non-digit character throw Exception
            if (!Character.isDigit(inputFromField.charAt(i))) {
                msg = new FacesMessage("Only numbers allowed");
                throw new ValidatorException(msg);
            }
        }
    }

Это сообщение об ошибке, которое я вижу, когда вижу, что не является числом

enter image description here

Почему я не вижу сообщения: разрешены только цифры?

1 Ответ

0 голосов
/ 01 мая 2011

Почему бы вам не использовать jsf LongRangeValidator для этой цели?

<h:inputText id="discountPercentage" 
      value="#{newOfferSupportController.discountPercentage}">
   <f:validateLongRange minimum="1" maximum="100"/>
</h:inputText>

Вы даже можете определить свои собственные сообщения проверки, если сообщения по умолчанию не соответствуютнеобходимо.См. этот ответ для получения дополнительной информации.

Кроме того, ваше сообщение об ошибке предназначено для productValue, а не для discountPercentage.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...