JSF 2 + Apache HTTP Server mod_weblogic.c

时间:2014-04-03 16:37:43

标签: jsf weblogic

我在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”添加到生成的所有链接(来自命令,来自资源等)?

感谢您的帮助。

1 个答案:

答案 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;
}

}