2009-11-24 35 views
0

当我的JSF页面呈现时,我收到以下消息。该页面在控制台中正确渲染但是下面不断重复过无数次的消息...JSF页面呈现错误:Faces上下文

INFO: ERROR: Unable to get Faces Context for session variable: localeBean 

11:54:27090 INFO [STDOUT] 2009年11月24日上午11点54分27秒com.web.util .faces.UtilFacesFuncs日志 信息:很可能,您已经从非面(即Servlet)上下文请求Faces对象。

在我的JSF我usign localebean如下:

<f:view locale="#{localeBean.userLocaleLoggedIn}"> 

在faces-config文件我把它定义如下:

<managed-bean> 
    <description>Locale Bean</description> 
    <managed-bean-name>localeBean</managed-bean-name> 
    <managed-bean-class>com.mg.faces.LocaleBean</managed-bean-class> 
    <managed-bean-scope>session</managed-bean-scope> 
</managed-bean> 

在我的课堂LocaleBean有一个方法getUserLocaleLoggedIn ()这是执行JSF页面时执行的代码:

<f:view locale="#{localeBean.userLocaleLoggedIn}"> 

O n调试我的jsp我可以看到被调用的方法,并且每次都很好,我一直调试我的jsp直到它创建页脚,当它向浏览器渲染时,这些错误反复抛出大约20+次。它只发生在tihs jsp上,因为它是我添加的新的。我试图与现有的jso进行比较,我看不到任何不同的东西,有谁知道我不愿意看什么?

任何帮助非常感谢。

谢谢。

问候

+0

此问题已解决,有些页面特定的函数在引用此bean之前被调用,从而导致错误消失。 – msharma 2009-12-28 20:41:53

回答

0

对不起我的评论我在上面添加没遇到过正确的,这里是我在我的web.xml: 还有我的网址我用的是http://localhost.com/context/register/mypage.htm 我的文件夹下的寄存器这些JSP。我可以从寄存器文件夹 调用其他jsp,并且此错误不会出现....只是发生这个特殊的jsp,我已经添加。

<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>/faces/*</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.faces</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.jsf</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

我试图加我完全映射但代码标签在这里的工作方式,它不跨自从兴田映射具有标签来了...我试图引用文字提供,但还是这个编辑器无法正确显示我的映射,道歉!

任何想法如何我应该打电话给我的网址。谢谢。

+1

答案的顺序是基于投票,所以请在将来编辑问题。 – McDowell 2009-11-24 22:23:45

0

该错误基本上意味着,请求URL(一个你在浏览器的地址栏看到,或它是用来包括/所述一个调度所需的页面)不匹配url-patternFacesServlet的映射定义为web.xml。你需要让请求的URL匹配它来调用FacesServlet

因此,如果是例如下面的后缀模式(扩展名映射):

<url-pattern>*.jsf</url-pattern> 

,那么你需要保证你的请求URL匹配它,即使用http://example.com/context/page.jsf代替http://example.com/context/page.jsp

,或者如果它例如以下前缀模式(目录映射):

<url-pattern>/faces/*</url-pattern> 

,那么你需要确保你的请求的URL看起来像http://example.com/context/faces/page.jsp而不是http://example.com/context/page.jsp

编辑:虽然我不会为FacesServlet使用多个url-pattern S和只是坚持一个,但映射似乎已经很好了。毕竟,错误信息因此来自com.web.util.faces.UtilFacesFuncs。这看起来像一个本土的实用课程。那个班正在做什么?这不仅仅是该实用程序类中的一个错误,例如它试图在请求中访问FacesContext太早或太迟?

+0

以我的web.xml我有以下映射: 面临的Servlet /面/ * 面临的Servlet * .faces 面临的Servlet * .jsf 面Servlet * .htm msharma 2009-11-24 18:43:59