用于呈现 <rich:message> 时出现错误"<f:ajax> contains an unknown id"



这是我的表单:

<h:body>
    <h:form>
        <h:panelGrid columns="3" >
            <h:outputLabel for="name" value="Primeiro nome:" />
            <h:inputText id="name" value="#{register.person.name}" >
                <f:ajax event="blur" render="m_name"  listener="#{register.validateName}" />                                        
            </h:inputText>
            <rich:message id="m_name" for="name" />
            //.. others fields
        </h:panelGrid>
    </h:form>
</body>

当我尝试执行Glassfish给出以下错误:

javax.servlet.ServletException: <f:ajax> contains an unknown id 'm_name' - cannot locate it in the context of the component name

但是如果我通过<h:message..>改变<rich:message ..>,它可以工作(我希望它与rich:message一起工作,因为它返回图像和消息)

为什么会这样?从来没有发生在我身上,直到现在。

RichFaces组件引用告诉我们关于<rich:messages>:

13.1.1。基本用法

<rich:message>组件在Ajax请求后自动呈现。这不需要通过Ajax请求源的render属性使用组件或特定引用。

所以,我只是删除m_name上的render属性,并用<a4j:ajax>替换<f:ajax>

<h:inputText id="name" value="#{register.person.name}" >
    <a4j:ajax event="blur" listener="#{register.validateName}" />
</h:inputText>
<rich:message id="m_name" for="name" />

如果你想显式地指定它,你可以在<rich:message>组件上设置ajaxRendered="false"

<h:inputText id="name" value="#{register.person.name}" >
    <f:ajax event="blur" listener="#{register.validateName}" render="m_name" />
</h:inputText>
<rich:message id="m_name" for="name" ajaxRendered="false" />

看起来像是richfaces行为。我怀疑你将不得不提交一个bug报告。

一种解决方法是将rich:message标签包含在div标签中的rich:message标签中,然后给div标签一个id="m_name"。

最新更新