Если я оставлю поля ввода пустыми и нажму «Отправить», сообщение об ошибке отобразилось правильно, но консоль выведет «INFO: WARNING: FacesMessage (s) поставлены в очередь, но, возможно, не отображались».
Я почти уверен, что в привязке id нет опечаток.Удивительно, но я также пытался не использовать шаблон композиции пользовательского интерфейса, предупреждения исчезают.Мне интересно, это проблема с составом шаблона.
<!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:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<ui:composition template="/WEB-INF/templates/BasicTemplate.html">
<ui:define name="content">
<h:messages globalOnly="true"></h:messages>
<h:form>
Account Setting:
<h:panelGrid columns="3">
Username: <h:inputText id="username" label="Username"
value="#{signup.username}" required="true" requiredMessage="*" />
<h:message globalOnly="false" for="username" styleClass="error"></h:message>
Password: <h:inputText id="password" label="Password"
value="#{signup.password}" required="true" requiredMessage="*" />
<h:message for="password" styleClass="error"></h:message>
</h:panelGrid>
<h:commandButton value="Submit" action="#{signup.signup}" />
</h:form>
</ui:define>
</ui:composition>
</html>
Предупреждение в консоли:
sourceId=j_idt32:username[severity=(ERROR 2), summary=(*), detail=(*)]
sourceId=j_idt32:password[severity=(ERROR 2), summary=(*), detail=(*)]
Я использую JSF 2.2