[ https://issues.apache.org/jira/browse/ADFFACES-438?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12486717 ]
Martin Marinschek commented on ADFFACES-438: -------------------------------------------- Scott, ExternalContext.encodeResourceURI is called _after_ the ViewHandler call in all JSF components in the standard. So first ViewHandler.getResourceUrl, then externalContext.encodeResourceURI(). It's a two step process. See e.g. the rendering code in ImageRenderer - first the CoreRenderer.toUri() method is called (which would map to ViewHandler.getResourceUrl()), then CoreRenderer.renderEncodedResourceURI() is called (which would map to ExternalContext.encodeResourceURI in the standard). Anyways you're right in that a test fails with my first code snippet - I'm digging into it. As a reference, the toUri and the ViewHandler.getResourceUrl methods. regards, Martin toUri: if (o == null) return null; String uri = o.toString(); if (uri.startsWith("/")) { // Treat two slashes as server-relative if (uri.startsWith("//")) { uri = uri.substring(1); } else { FacesContext fContext = FacesContext.getCurrentInstance(); uri = fContext.getExternalContext().getRequestContextPath() + uri; } } return uri; getResourceUrl(): if (path.length() > 0 && path.charAt(0) == '/') { return facesContext.getExternalContext().getRequestContextPath() + path; } else { return path; } > Trinidad components don't use ViewHandler.getResourceUrl - custom > ViewHandlers can fail due to this > --------------------------------------------------------------------------------------------------- > > Key: ADFFACES-438 > URL: https://issues.apache.org/jira/browse/ADFFACES-438 > Project: MyFaces ADF-Faces > Issue Type: Bug > Components: Components > Affects Versions: 1.0.1-incubating-core-SNAPSHOT > Reporter: Martin Marinschek > Assigned To: Martin Marinschek > Fix For: 1.0.1-incubating-core-SNAPSHOT > > > Trinidad's components all call: > CoreRenderer.toUri() > when they encode their resource-urls. > This method does essentially the same as the JSF-Viewhandler's method > getResourceUrl(), so there is no reason why the core-renderer shouldn't call > this method. If the viewHandler's getResourceUrl() is not called, some other > projects fail to work together with Trinidad, an example for this is Weblets > by John Fallows which overwrites the ViewHandler's getResourceUrl() method. > Changing toUri() method to: > static public String toUri(Object o) > { > if (o == null) > return null; > > String uri = o.toString(); > // Treat two slashes as server-relative > if (uri.startsWith("//")) > { > uri = uri.substring(1); > } > return > FacesContext.getCurrentInstance().getApplication().getViewHandler().getResourceURL( > FacesContext.getCurrentInstance(),uri); > } > should fix the issue. > regards, > Martin -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.