【问题标题】:JSF page rendering error:Faces ContextJSF 页面渲染错误:Faces Context
【发布时间】:2009-11-24 18:09:59
【问题描述】:

当我的 JSF 页面被渲染时,我收到以下消息。该页面已正确呈现,但在控制台中,下面的消息会重复多次...

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

11:54:27,090 信息 [标准输出] 2009 年 11 月 24 日上午 11:54:27 com.web.util.faces.UtilFacesFuncs 日志 信息:很可能,您从非面孔(即 Servlet)上下文中请求了面孔对象。

在我的 JSF 中,我使用 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}">

在调试我的 jsp 时,我可以看到该方法被调用并且一切都很好,我一直调试我的 jsp 直到它创建页脚,就在它呈现给浏览器时,这些错误被重复抛出大约 20 次以上.它只发生在 tihs jsp 上,因为它是我添加的一个新的。我尝试与现有的 jso 进行比较,我看不出有什么不同,有人知道我在寻找什么吗?

非常感谢任何帮助。

谢谢。

问候

【问题讨论】:

  • 此问题已解决,在引用此 bean 之前需要调用一些特定于页面的函数,从而使错误消失。

标签: java jsf


【解决方案1】:

抱歉,我在上面添加的评论没有正确理解,这是我的 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>

我正在尝试添加我的完整映射,但是代码标签在这里的工作方式,它没有出现,因为 hte 映射有标签...我尝试了提供的块引用,但这个编辑器仍然无法正确显示我的映射,道歉!

知道我应该如何调用我的网址。谢谢。

【讨论】:

  • 答案顺序以投票为准,所以请在以后编辑问题。
【解决方案2】:

此错误基本上意味着请求 URL(您在浏览器地址栏中看到的那个,或者用于包含/发送所需页面的那个)确实 匹配 @987654325 FacesServlet 的映射在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

编辑:虽然我不会将多个url-patterns 用于FacesServlet,而只使用一个,但映射看起来不错。毕竟,错误消息因此来自com.web.util.faces.UtilFacesFuncs。这看起来像一个本土的实用程序类。那堂课到底在做什么?它不只是该实用程序类中的一个错误,例如它试图在请求中过早或过晚访问 FacesContext 吗?

【讨论】:

  • 在我的 web.xml 我有以下映射: Faces Servlet/faces/*模式> Faces Servlet*.facesFaces Servlet*.jsfFaces Servlet名称> *.htm
猜你喜欢
  • 1970-01-01
  • 2018-04-04
  • 2016-04-16
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 2018-04-09
相关资源
最近更新 更多