1

我试图让这个例子工作: http: //jugojava.blogspot.de/2011/07/jsf-form-authentication-on-servlet-3.html 问题发生在:

request.login(username, password);

Eclipse 说:“HttpServletRequest 类型的方法 login() 未定义”。我将 jdk 1.7 与 Mojarra 2.1.0 和 Glassfish 3.1 一起使用。

谢谢你的帮助!

4

2 回答 2

1

从 Servlet 3.0 开始引入该方法。因此,仅当您针对 Servlet 3.0 兼容容器(例如 Glassfish 3.x)配置和开发项目时,它才可用。

但是,您似乎已经拥有 Glassfish 3.x。鉴于您在 Eclipse 中开发,还有其他可能导致此特定问题的原因:

  • Glassfish 未关联为项目的目标运行时。在项目的属性中,确保它已在Targeted Runtimes部分中被选中。这样 Eclipse 将自动将其库包含在项目的构建路径中。

    在此处输入图像描述

  • 项目未配置为 Servlet 3.0 项目。在项目的属性中,确保在Project Facets部分中将Dynamic Web Module版本设置为 3.0 。这样 Eclipse 将自动构建版本 3.0 而不是较低的版本。

    在此处输入图像描述

  • 您已经手动下载了完全不同的 servletcontainer 版本的任意文件javaee.jar和/或servlet-api.jar文件,并将其放在项目的 buildpath/classpath 中,通过/WEB-INF/lib它优先于 Glassfish 自己的库。这是完全错误的。你不应该那样做。撤消所有这些更改。如果您正确地将服务器指定为目标运行时,则这是不必要的。

也可以看看:

于 2013-04-18T16:42:57.260 回答
0

Servlet 3.0 APIjar 添加到类路径中,或使用支持Servlet 3.0.

于 2013-04-18T16:36:01.197 回答