Я проверил этот пост и этот пост , но ни одно из этих решений не дало мне четкого ответа на мой вопрос, который у меня возник в этом посте.Попробуйте приведенный ниже пример.
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form id="employeeForm">
<h:panelGrid columns="3">
<h:outputLabel for="employeeFirst" value="First: " />
<h:inputText id="employeeFirst" immediate="true" onchange="submit()">
<f:validateLength minimum="3" maximum="30" />
</h:inputText>
<h:message for="employeeFirst" errorStyle="color: red" />
<h:outputLabel for="employeeLast" value="Last: " />
<h:inputText id="employeeLast">
<f:validateLength minimum="3" maximum="30" />
</h:inputText>
<h:message for="employeeLast" errorStyle="color: red" />
<h:outputLabel for="employeeTitle" value="Title" />
<h:inputText id="employeeTitle">
<f:validateLength minimum="3" maximum="30" />
</h:inputText>
<h:message for="employeeTitle" errorStyle="color: red" />
</h:panelGrid>
</h:form>
</h:body>
</html>
Если вы запустили приведенный выше код и вставили значение длиной менее 3 символов в первое поле ввода, рядом с полем появится сообщение об ошибке красного цвета.Такое поведение абсолютно нормально и ожидаемо.
Однако, если вы вставите значение длиной от 3 до 30 символов, сообщение об ошибке для первого поля исчезнет, а два других поля ввода автоматически выдадут сообщения об ошибках.Я не хочу, чтобы эти два сообщения об ошибках появлялись автоматически после успешной вставки значения в первое поле ввода.
Мне показалось, что во втором и третьем полях ввода по умолчанию для непосредственных атрибутов задано значение true, поэтому я немедленно добавилатрибуты и присваивает ложные каждому из них, но результат был таким же, как и раньше.
Как я могу иметь только одно поле в форме для немедленного действия, а не другие поля?
Редактировать:
Я прошу прощения за то, что не разъяснил мой вопрос.Я уже знал, что ajax может обработать сообщение об ошибке для проверки формы, но я хотел, чтобы ведущие спецификации JSF знали, что может быть проблема с атрибутом immediate
, чтобы они могли это исправить для следующего выпуска JSF.Я также надеялся, что уже может быть решение этого неожиданного поведения с атрибутом immediate
, и в этом случае я хотел бы услышать это в этом посте.В любом случае, спасибо, что предложили мне использовать Ajax для этого.