Сообщение о добавленных вручную лицах не отображается на вкладке панели аккордеона

Я добавляю сообщение о лицах в метод действия, как показано ниже:

FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_WARN, "Mail invalide", "Vérifier le mail");
FacesContext.getCurrentInstance().addMessage("connection:mail", message);

Я ожидаю, что он появится в нижней позиции в дереве:

<h:body>
    <p:layout fullPage="true">
        <p:layoutUnit position="center" >
            <p:accordionPanel multiple="true" activeIndex="0">
                <p:tab title="Se connecter" >
                    <h:form id="connection">
                        ...
                        <p:inputText id="mail" ... />
                        <p:message for="mail"></p:message>
                        ...
                        <p:commandButton value="OK" action="#{login.validateMailPaswword()}" ajax="false" />

Однако в нужном месте он не появился. Чем это вызвано и как я могу это решить?


person senjoux    schedule 22.06.2015    source источник
comment
это не работает   -  person senjoux    schedule 22.06.2015
comment
я до сих пор не использовал файл css, в Primefaces уже есть несколько классных тегов стилей, ... но любая помощь будет принята с благодарностью   -  person senjoux    schedule 22.06.2015
comment
Это не имеет ничего общего с CSS.   -  person BalusC    schedule 22.06.2015


Ответы (1)


Идентификатор клиента в addMessage() должен быть действительным, чтобы сообщение отображалось в нужном месте. Вы уже приняли во внимание, что <h:form> является NamingContainer и, таким образом, добавляет свой идентификатор компонента к идентификатору клиента дочерних элементов. Однако вы упустили из виду, что <p:accordionPanel> также является таким (и вы должны были заметить это, просто просматривая сгенерированный вывод HTML, выясняя идентификатор клиента для сообщения).

Итак, сначала дайте ему фиксированный идентификатор. Например.

<p:accordionPanel id="tabs">

Затем найдите в сгенерированном выводе HTML идентификатор клиента сгенерированного HTML-представления компонента ввода, на который вы ссылаетесь в компоненте сообщения. Это будет выглядеть примерно так:

<input type="text" id="tabs:connection:mail" ... />

Итак, ссылайтесь именно на этот идентификатор в файле addMessage().

context.addMessage("tabs:connection:mail", message);
person BalusC    schedule 22.06.2015
comment
Решение --› context.addMessage(tabs:connection:mail, myMessage); Спасибо, чувак, ты действительно спас меня! - person senjoux; 22.06.2015