这是我的表格:
<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
但是,如果我按<rich:message ..>
更改<h:message..>
则可行(我希望它适用于rich:message,因为它会返回图像和消息)
为什么会这样?从来没有发生在我之前,直到现在。
答案 0 :(得分:1)
The RichFaces component reference告诉我<rich:messages>
:
13.1.1。基本用法
...
在Ajax请求之后,
<rich:message>
组件自动呈现。这通过Ajax请求源的render属性不使用组件或特定引用而发生。
因此,我只需删除render
上的m_name
属性,然后将<f:ajax>
替换为<a4j: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" />
如果您想要明确指定它,可以在ajaxRendered="false"
组件上设置<rich:message>
。
<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" />
答案 1 :(得分:0)
对我来说看起来像一个富有表现的行为。我怀疑你必须提交错误报告。
解决方法是将rich:message标记包含在div标记内的rich:message标记内,然后将div标记赋予id =“m_name”。