JSF 2 ч: сообщение в составном компоненте не может найти идентификатор ввода - PullRequest
1 голос
/ 08 июля 2011

У меня есть следующий рабочий код:

<h:outputLabel value="Name:" for="nameField"/>
<h:panelGroup>
    <h:inputText id="nameField" value="${bean.name}" required="true" />
    <t:message for="nameField"
        detailFormat="!" tooltip="true" errorClass="errorMessage"
        infoClass="infoMessage" fatalClass="fatalMessage"
        warnClass="warningMessage"/>
</h:panelGroup>

Теперь я пытаюсь обернуть компонент сообщения в составной компонент, который выглядит следующим образом:

<composite:interface>
    <composite:attribute name="for" required="true"/>
</composite:interface>

<composite:implementation>
    <t:message for="#{cc.attrs.for}"
                detailFormat="!" tooltip="true"
                errorClass="errorMessage" infoClass="infoMessage"
                fatalClass="fatalMessage" warnClass="warningMessage"/>
</composite:implementation>

При эталонной реализации (2.0.3) я получаю следующее исключение:

Jul 8, 2011 10:59:13 AM org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlMessageRendererBase renderMessage
SEVERE: Could not render Message. Unable to find component 'nameField' (calling findComponent on component 'simplePersonSearchForm:j_idt89:j_idt100'). If the provided id was correct, wrap the message and its component into an h:panelGroup or h:panelGrid.
java.lang.NullPointerException
    at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.createMetaRuleset(CompositeComponentTagHandler.java:247)
    at javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:123)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:96)
    at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.setAttributes(CompositeComponentTagHandler.java:225)
    at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.applyNextHandler(CompositeComponentTagHandler.java:178)
.....
.....

1 Ответ

0 голосов
/ 11 июля 2011

Отлично работает с <h:message>. Я бы посчитал это ошибкой в ​​реализации Томагавка.

Итак, у вас есть 2 варианта:

  1. Заменить на <h:message>.

  2. Сообщите о проблеме ребятам из Томагавка и подождите, пока они исправят ее.

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