Jsf “错误”&书信电报;f:ajax>;包含未知id“;用于渲染时<;丰富:信息>;

Jsf “错误”&书信电报;f:ajax>;包含未知id“;用于渲染时<;丰富:信息>;,jsf,jsf-2,richfaces,glassfish-3,Jsf,Jsf 2,Richfaces,Glassfish 3,这是我的表格: <h:body> <h:form> <h:panelGrid columns="3" > <h:outputLabel for="name" value="Primeiro nome:" /> <h:inputText id="name" value="#{register.person.name}" > <f:

这是我的表格:

<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
javax.servlet.ServletException:包含未知id“m_name”-无法在组件名称的上下文中找到它
但是如果我通过
更改
,它会工作(我希望它与rich:message一起工作,因为它返回一个图像和一条消息)


为什么会这样?我以前从未发生过这种事,直到现在。

在我看来像是一种有钱人的行为。我怀疑你将不得不提交一份bug报告

解决方法是将rich:message标记括在div标记内的rich:message标记内,然后给div标记一个id=“m_name”。

告诉我们:

13.1.1. 基本用法

组件在Ajax请求后自动呈现。这在不使用组件或通过Ajax请求源的render属性的特定引用的情况下发生

因此,我只需删除
m_name
上的
render
属性,并用
替换

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