Ok. And to close this out, the problem is that I was using tomahawk-1.1.9 instead of tomahawk-1.2-1.1.9.
In 1.2-1.1.9, the problem has been solved by returning either the clientId or the Id as appropriate. I guess it's possible that there's still a bug in 1.1's 1.1.9, but until someone brings it up, I guess we'll leave it alone. On Thu, Jun 17, 2010 at 4:30 PM, Mike Kienenberger <[email protected]> wrote: > Maybe the solution is to use > > msgSummary = > msgSummary.replaceAll(HtmlMessageRenderer.findInputId(msgClientId, > inputLabel); > > in addition to > > msgSummary = > msgSummary.replaceAll(HtmlMessageRenderer.findInputId(facesContext, > msgClientId),inputLabel); > > So on the first pass, replace the full client-id. > On the second pass, replace the id. > > I'm still not certain why we'd replace only the Id, but this should > provide backwards-compatible behavior. > > I still think the right fix is to use only the client-id, but there > must be a reason why someone went to great lengths to look up the Id > from the client-id. > > > On Thu, Jun 17, 2010 at 4:21 PM, Mike Kienenberger <[email protected]> wrote: >> I finally had some time to investigate this. >> >> The problem appears to be that in Tomahawk 1.1.9, t:messages renderer >> returns the id rather than the clientId of the component. This is >> exactly the opposite of what Michael Heinen found in his original >> message. Unfortunately it means that only the last piece of the >> clientId is replaced in the message, rather than the entire client id. >> >> >> public static String findInputId(FacesContext facesContext, String >> inputClientId) >> >> [...] >> >> return >> info==null?null:(info.getForComponent()==null?null:info.getForComponent().getId()); >> >> Can anyone think of a reason why we would be returning the Id instead >> of the clientId? Can anyone think of a use case where the generated >> message would be using the Id instead of the client id? My limited >> testing shows that the client-id is used in the FacesMessages. >> >> >> >> >> On Fri, Apr 2, 2010 at 1:43 PM, Mike Kienenberger <[email protected]> wrote: >>> Michael, I'm having the same problem you had before using >>> >>> myfaces-api-1.2.8.jar >>> tomahawk-1.1.9.jar >>> >>> Were you saying it was caused by a patch you made, or by an incorrect >>> patch MyFaces incorrectly applied? >>> >>> This page code: >>> ----------------------------------------------- >>> <t:messages >>> globalOnly="true" >>> showDetail="true" /> >>> >>> <t:messages >>> globalOnly="false" >>> showDetail="true" /> >>> >>> <h:outputLabel >>> for="accountPaymentAmountInput" >>> value="Amount" /> >>> <h:inputText >>> id="accountPaymentAmountInput" >>> >>> binding="#{page.accountPaymentAmountInput}" >>> required="true" >>> >>> value="#{page.accountPaymentAmount}"> >>> </h:inputText> >>> ----------------------------------------------- >>> >>> results in >>> >>> ======================== >>> masterForm:enterPaymentForm:Amount: Validation Error: Value is required. >>> ======================== >>> >>> >>> On Tue, Dec 22, 2009 at 12:49 PM, Michael Heinen >>> <[email protected]> wrote: >>>> I found the issue during the creation of a small test project. >>>> It was caused by a not correctly migrated patch for the UIInput.class. >>>> >>>> Michael >>>> >>>> -----Original Message----- >>>> From: [email protected] [mailto:[email protected]] On >>>> Behalf Of Jakob Korherr >>>> Sent: Dienstag, 22. Dezember 2009 17:05 >>>> To: MyFaces Discussion >>>> Subject: Re: [tomahawk] replaceIdWithLabel not working in t:messages after >>>> update to JSF 1.2 >>>> >>>> Hi Michael, >>>> >>>> I'm sorry, but I can not reproduce your problem. On my machine it is "User: >>>> Validierungsfehler: Eingabe erforderlich.". >>>> >>>> Can you please provide more information about your jsp. >>>> >>>> Regards, >>>> Jakob >>>> >>>> >>>> 2009/12/22 Michael Heinen <[email protected]> >>>> >>>>> Hi, >>>>> >>>>> I have another migration issue: >>>>> Error messages are rendered with the component ids instead of the label >>>>> after update from myfaces 1.1.6 to 1.2.8 and tomahawk to 12_1.1.9 >>>>> >>>>> jsp: >>>>> <h:outputLabel for="name" value="User"/> >>>>> <h:panelGroup> >>>>> <h:inputText id="name" value="#{MyController.name}" required="true"> >>>>> >>>>> Class >>>>> org.apache.myfaces.renderkit.html.ext.HtmlMessagesRenderer.getSummary(...) >>>>> contains following line (86): >>>>> >>>>> msgSummary = >>>>> msgSummary.replaceAll(HtmlMessageRenderer.findInputId(facesContext, >>>>> msgClientId),inputLabel); >>>>> >>>>> Content: >>>>> msgSummary= name: Validierungsfehler: Eingabe erforderlich. >>>>> HtmlMessageRenderer.findInputId(facesContext, msgClientId) returns >>>>> loginForm:name >>>>> inptutLabel= User >>>>> >>>>> So the problem is that findInputId returns the full qualified clientid >>>>> instead of the id. >>>>> This worked with the old 1.1 jars. >>>>> >>>>> Any ideas? >>>>> Michael >>>>> >>>> >>> >> >

