tr:message component not displaying messages submitted using
FacesContext.addMessage
------------------------------------------------------------------------------------
Key: TRINIDAD-1791
URL: https://issues.apache.org/jira/browse/TRINIDAD-1791
Project: MyFaces Trinidad
Issue Type: Bug
Components: Components
Affects Versions: 1.2.12-core
Environment: Ubuntu Koala, JDeveloper 11.1.1.2.0, FireFox 3.5.9.
Reporter: Don Forbes
Priority: Minor
A message added using FacesContext.addMessage(String id, FacesMessage) for id
"myId" does not display in the (explicit or implicit) tr:message field for the
component defined with id="myId". However, the message does display correctly
in the tr:messages component for the page.
I added diagnostic displays to method
org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.MessageRenderer.encodeAll
and found that the problem seems to be that this method is using a qualified
key (the variable "forId", obtained using MessageUtils.getClientIdFor). E.g.
it tries to retrieve the message using key forid="j_id7:myId", whereas the
message was stored with the key "myId". I was able to resolve the problem by
trying an alternative forId key with the ""j_id:" prefix stripped off, as
follows:
After line 113:
FacesMessage facesMessage = MessageUtils.getFacesMessage(context, forId);
... I simply added the following alternative lookup code to get it working.
if (facesMessage == null) {
String altForId = null;
if (forId != null && forId.contains(":")) {
final String[] split = forId.split(":");
altForId = split[split.length - 1];
}
facesMessage = MessageUtils.getFacesMessage(context, altForId);
}
Am I supposed to be resolving the id myself (myId -> j_id7:myId) before the
addMessage call? I doubt it because this would seem like a lot of overhead and
unnecessary exposure of Trinidad internals.
Thank you,
Don
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.