2014-04-03 51 views
1

我在Weblogic 11g Runnig JSF 2 Web App前配置了一個Apache Httpd Server,其中包含mod_weblogic.c。JSF 2 + Apache HTTP服務器mod_weblogic.c

如地址:

http://hostname/partToBeTrimmed/myContextPath/restOfPath.xhtml 

通過的httpd服務器trasformed:

http://hostname/myContextPath/restOfPath.xhtml 

申請作出答覆,並顯示在頁面上,而是通過在頁面內JSF產生的所有鏈接都:

/myContextPath/restOfPath.xhtml 
/myContextPath/resource1.some 
/myContextPath/resource2.some 

所以在下次調用的時候地址是錯誤的,因爲httpd服務器沒有迴應「 partToBeTrimmed「前置其餘的路徑。

我如何強制JSF向所有鏈接(從命令和資源等)中添加「partToBeTrimmed」?

感謝您的幫助。

回答

0

解決了與:

<view-handler>my.package.view.PathTrimViewHandler</view-handler> 

在faces-config.xml中

和類:

public class PathTrimViewHandler extends ViewHandlerWrapper { 

private final ViewHandler wrappped; 

public PathTrimViewHandler(ViewHandler wrappped) { 
    super(); 
    this.wrappped = wrappped; 
} 

@Override 
public ViewHandler getWrapped() { 
    return wrappped; 
} 

@Override 
public String getActionURL(FacesContext context, String viewId) { 
    String url = super.getActionURL(context, viewId); 
    return addRootContextPath(context, url); 
} 

@Override 
public String getResourceURL(FacesContext context, String path) { 
    String url = super.getResourceURL(context, path); 
    return addRootContextPath(context, url); 
} 

private String addRootContextPath(FacesContext context, String url) { 

    return "/partToBeTrimmed"+url; 
} 

}