2010-04-20 68 views
0

我想,如下所述在我的web应用程序的机制:JSF Servlet的拱门帮助需要

用户将进入mydomain.com/CompanyName,取决于CompanyNameit将展示其标志和其定制的页面,我将采取在会话中,每次请求时都会重新分析参数,我会比较解析的CompanyName和会话中存储的一个,如果它们匹配,那么应用程序将显示请求的页面和用户的data.else,它将被重定向到登录页面。 和主要的是我想在JSF拱门这件事情。

我试图采取一个servlet,将解决所有的请求,它会分析,然后将请求分派到首选servlet的,但问题是它会在环路再次解析到同一个控制器servlet,

+0

我还没有得到我的答案, – 2010-04-20 14:17:50

回答

3

你可以通过相位监听器来完成。您可以定义faces-config.xml一个全球性(或使用注释,如果JSF 2.0时)

<lifecycle> 
    <phase-listener>com.yourcompany.CompanyPhaseListener</phase-listener> 
</lifecycle> 

在那里,您可以访问FacesContext,从中可以获取当前请求的URI。解析它并在请求中存储适当的属性,您稍后可以在您的页面上阅读这些属性。

阶段侦听器上所指定的阶段(一个或多个)执行的,也许你应该选择RENDER_RESPONSE

对于影响您的网址出现在浏览器的方式,检查PrettyFaces

+0

但这里的问题是, 我怎样才能实现mydomain.com/something/companyname/pages/spagepage.jsf模式? 浏览器中的URL必须包含companyName。 – 2010-04-20 08:31:50

+0

作为一个说明 - 为什么你不使用子域名,即 - 'companyname.yourdomain.com'(看到我的更新) – Bozho 2010-04-20 09:08:02

+0

不,我想只使用URL模式处理它,我们不能只使用JSF来管理它只有,没有preetyFaces? – 2010-04-20 09:21:25

1

我试图采取一个servlet,将解决所有的请求,它会分析,然后将请求分派到首选servlet的,但问题是它会在环路再次解析到同一个控制器servlet,

改为使用Filter。它默认不会侦听转发的请求,所以您不会在转发时获得无限循环。

+0

这就是漂亮的面孔做什么, 使用这种模式我面临的一个问题, 它工作正常除的情况下,当画面从faces-config.xml中得到解决,则URL模式不会是需要一个,我的意思是使用漂亮的脸孔,我们可以解决从模式的观点,但是当我解决从faces-config.xml视图,我想要我想要的网址模式? – 2010-04-21 04:09:13

+0

这里我附上了我使用prettyFaces创建的示例应用程序, 访问此URL。 HTTP:// yourserver:端口/ MavenJSFSample /的companyName /登录 点击按钮 它WI得到 HTTP:// yourserver:端口/ MavenJSFSample /的companyName/home.jsf 我想要一些东西一样 HTTP://yourserver:port/MavenJSFSample/companyName/home http://www.4shared.com/file/M9h7dt9S/MavenJSFSample.html]MavenJSFSample.zip – 2010-04-21 05:00:34

+0

BalusC期待您的评论。 – 2010-04-23 11:01:23