Съобщението за ръчно добавени лица не се показва в раздела на панела с акордеон

Добавям съобщение за лица в метод на действие, както е показано по-долу:

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
не работи @smoggers   -  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