Details
Description
                    D2DViewHandler, getResourceURL(FacesContext context, String path) checks to see if the path contains a leading '/'. If so, it blindly appends the request context path, whether or not the given path already contains the context root path. This conflicts with the behaviour of the ResourceRegistry, which returns URLs that contain the root context path, and makes it difficult to use a URL derived from the ResourceRegistry on any component that first calls getResourceURL(..) to transform a path. We should first check if the given path argument contains the context path before appending, if it does, we should simply return the path unchanged, as we do if the path does not contain a leading '/'.
suggested fix:
Index: C:/work/workspace/icefaces-trunk-ossrepo/core/src/com/icesoft/faces/application/D2DViewHandler.java
===================================================================
--- C:/work/workspace/icefaces-trunk-ossrepo/core/src/com/icesoft/faces/application/D2DViewHandler.java (revision 19267)
+++ C:/work/workspace/icefaces-trunk-ossrepo/core/src/com/icesoft/faces/application/D2DViewHandler.java (working copy)
@@ -308,9 +308,9 @@
}
 
public String getResourceURL(FacesContext context, String path) {
- ExternalContext extContext = context.getExternalContext();
- if (path.startsWith("/")) {
- return (extContext.getRequestContextPath() + path);
+ String requestContextPath = context.getExternalContext().getRequestContextPath();
+ if (path.startsWith("/") && !path.startsWith(requestContextPath)) {
+ return (requestContextPath + path);
} else {
return path;
}
            
suggested fix:
Index: C:/work/workspace/icefaces-trunk-ossrepo/core/src/com/icesoft/faces/application/D2DViewHandler.java
===================================================================
--- C:/work/workspace/icefaces-trunk-ossrepo/core/src/com/icesoft/faces/application/D2DViewHandler.java (revision 19267)
+++ C:/work/workspace/icefaces-trunk-ossrepo/core/src/com/icesoft/faces/application/D2DViewHandler.java (working copy)
@@ -308,9 +308,9 @@
}
public String getResourceURL(FacesContext context, String path) {
- ExternalContext extContext = context.getExternalContext();
- if (path.startsWith("/")) {
- return (extContext.getRequestContextPath() + path);
+ String requestContextPath = context.getExternalContext().getRequestContextPath();
+ if (path.startsWith("/") && !path.startsWith(requestContextPath)) {
+ return (requestContextPath + path);
} else {
return path;
}
Activity
- All
 - Comments
 - History
 - Activity
 - Remote Attachments
 - Subversion
 
Simple test case with commandButton having an image attribute whose value includes the request context path
            Show
            
                        
    
    
    
                
    
 Philip Breau
 added a comment  -                     Simple test case with commandButton having an image attribute whose value includes the request context path              
        
    
tested on lastest build, seems ok