我在Weblogic 11g runnig JSF 2 Web App前配置了一个带有mod_weblogic.c的Apache Httpd服务器。
地址如:
http://hostname/partToBeTrimmed/myContextPath/restOfPath.xhtml
由Httpd服务器在:
中进行转换http://hostname/myContextPath/restOfPath.xhtml
应用程序响应并显示页面,但页面内JSF生成的所有链接都是:
/myContextPath/restOfPath.xhtml
/myContextPath/resource1.some
/myContextPath/resource2.some
所以在下次调用时,地址是错误的,因为httpd服务器没有响应“partToBeTrimmed”,而是在路径的其余部分之前。
如何强制JSF将“partToBeTrimmed”添加到生成的所有链接(来自命令,来自资源等)?
感谢您的帮助。
答案 0 :(得分: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;
}
}