问题标签 [facesservlet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
59262 浏览

maven - java.lang.ClassFormatError:类文件 javax/faces/webapp/FacesServlet 中非本机或抽象方法中的缺失代码属性

我想将 Mojarra 2.1 与 Tomcat 7 一起使用,所以我在我的 pom 文件中添加了以下依赖项:

但是,当我尝试启动 Tomcat 时,出现以下异常:

这是如何引起的,我该如何解决?

这是我的web.xml文件,其中可能包含问题的原因:

0 投票
1 回答
99 浏览

java - 将页面名称与 jsf web.xml 中的文件名解耦

我希望为响应 specific1.xhtml、specific2.xhtml 等请求而提供页面 generic.xhtml...

有没有办法设置 web.xml 以便多个请求映射到一个文件而不进行重定向?应始终向用户显示特定的.xhtml 名称。

特定名称与特定模式不匹配,例如以单词 specific 开头。我有一个特定名称的列表,这些名称都是用一页实现的。

这等效于具有 generic.xhtml?name=specific1 ,只是 name 参数是请求中的文件名。

如果这不能通过 web.xml 或其他配置文件处理,还有什么方法?

页面由 Tomcat 7 提供。

0 投票
1 回答
1546 浏览

jakarta-ee - FacesServlet 如何知道根据 URL 渲染哪个 facelet?

我一直在检查,无法找到有关 FacesServlet 如何将 URL 解析为 Web 应用程序文件结构中的真实文件的解释。在 servlet 的上下文中,我的理解是 URL 只是您希望客户端使用的虚构名称。然后,在 web.xml 中,您将特定的 servlet 映射到 URL 模式,但是 servlet 的真实名称/位置对外界是隐藏的……这通常适用于 servlet。

特别是对于 JSF 2,我们处理 FacesServlet,这引出了我的第一个问题:FacesServlet 是我需要在我的应用程序中提供映射详细信息的唯一 servlet(也是我唯一需要的 servlet,期间)?答案似乎是“是”,但如果在某些情况下并非如此,请举个例子。

通过阅读关于 SO 的其他问题,我了解到并非所有请求都需要通过 FacesServlet,因此基本上请求分为 A)对不应该由 FacesServlet 处理的静态内容的请求,和 B)对动态内容的请求需要由 FacesServlet 处理。那么,静态内容是如何获得的呢?只是通过传入的请求,其中的 URL 与 FacesServlet 的 URL 模式不匹配,但匹配应用程序文件结构中的真实文件位置?

最后,我的主要问题是:当一个请求与 FacesServlet 的 URL 模式匹配时,FacesServlet 如何知道要呈现哪个视图文件 (.xhtml)?在使用 JSF 2 时是否有一个约定,我需要遵循它才能使其工作?如果不是,那么我不明白,因为就像我在上面提到的“通用”servlet 的情况下,URL 可以包含一个与真实文件名无关的名称,只要它映射到web.xml 文件中的正确 servlet。我觉得我在这里遗漏了一些明显(和重要)的东西。我唯一能想到的是 URL 应该匹配一个真实的文件位置,或者有另一个映射表或将 URL 与视图文件相关联的东西。

顺便说一句,我看了这个问题,它是相关的,但没有任何答案。

谢谢!

0 投票
1 回答
2107 浏览

jsf - 无法让 CXF JAX-RS 和 JSF 一起工作

我正在尝试设置一个FooTest使用 CXF JAX-RS 和 JSF 的小型示例应用程序。我从 CXF 部分开始,实现了一个简单的服务(工作)和一个名为 home.html 的小 html 页面(我可以在浏览器中访问它)。相关代码如下:

web.xml

FooService.java

现在我可以调用http://localhost:8080/FooTest/rest/fooand http://localhost:8080/FooTest/home.html。但是,当我开始定义和映射FacesServletto*.html并尝试访问时,home.html我得到一个NullPointerException.

新的 web.xml

导致

我怎样才能解决这个问题?

更新 - 更多配置信息

该应用程序在 TomEE 1.5.2 的 JAX-RS 版本上运行。

src/main/webapp/WEB-INF/faces-config.xml

更新 - 解决方案

(感谢 David Blevins 的澄清并指出一个有用的例子)

去掉CXF配置部分,不是必须的。重命名home.htmlhome.xhtml,因为.xhtmljavax.faces.DEFAULT_SUFFIX用于 JSF 页面。FacesServlet如果您想使用扩展访问您的 JSF 页面,请保留该映射.html。这就足够了:

0 投票
2 回答
1391 浏览

jakarta-ee - Glassfish - 将 servlet FacesServlet 标记为不可用

当我启动 Glassfish 2.1 服务器时,它似乎启动没有问题,但是当我尝试访问其管理控制台时,我收到错误:

在它的控制台和 server.log 上,我可以看到:

我第一次访问管理控制台时会记录最后 2 个条目。

为什么 glassfish 将 FacesServlet 标记为不可用?

0 投票
1 回答
145 浏览

java - Java EE - 基于内部业务逻辑的显示页面

我正在 Glassfish 服务器上使用 Java EE 实现企业应用程序。我需要我的应用程序执行一些逻辑来显示特定 URL 子集的正确输出。

问题描述:

我的网页文件夹具有以下结构:

我希望用户访问 URL:

但用户不得访问以下 URL:

当输入 URL /Protected/CorrectPage.xhtml 时,我想执行一些逻辑,根据这个逻辑的结果,我想显示 A.xhtml 或 B.xhtml,而不显示任何可见的 URL 更改(重定向)。

到目前为止尝试的解决方案:

我考虑过使用映射到 /Protected/*.xhtml 的 servlet,同时让 Faces Servlet 处理我的应用程序中的任何其他 URL。

并拥有:

我的问题是我不知道如何实现Show A.xhtml。我基本上想向客户端打印我的 xhtml 页面。

我还考虑过使用响应 PrintWriter 来解决最后一个问题。

但是,这并不能解决我的问题,因为我不知道如何打印 xhtml 文件,同时还要评估其中包含的表达式语言。

结论

非常感谢任何帮助。即使这意味着改变我提议的结构中的某些内容。自然,如果 servlet 的创建不是我的问题的正确解决方案,我将离开那个轨道。

我只对用户将体验到的结果感兴趣。

提前致谢

0 投票
0 回答
554 浏览

ajax - 如何避免 FacesContext 在单独的 Servlet 中为空 - JSF

我正在尝试使我的 Web 应用程序国际化,因此我正在使用 ResourceBundle 并使用以下方法动态更改语言环境:

起初效果很好。但我正在尝试使用 AJAX 调用来更新页面,并且程序使用第三方 servlet 来处理 AJAX 调用。所以现在当我的 bean 被调用时,它不断得到一个空异常(因为我不在 FacesServlet 中,我在其他一些 servlet 中)。

调用 ajax 的代码看起来像

托管 bean 代码:

有任何想法吗?

0 投票
1 回答
411 浏览

jsf - PWC1232:超过嵌套请求调度的最大深度:org.apache.catalina.core.ApplicationDispatcher.doInvoke 中的 20

我将 jsf 2.1 (mojara) 与 glassfish 3.1 一起使用,我的 web .xml 看起来像:

我收到此错误

2015-03-11T21:40:15.054+0530|警告:ApplicationDispatcher [/JSFProject] PWC1231:Servlet Faces Servlet 的 Servlet.service() 抛出异常 javax.servlet.ServletException:PWC1232:超过嵌套请求调度的最大深度:20 org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:772)

0 投票
1 回答
865 浏览

jsf-2 - FacesServlet 在 Web 片段中不起作用

我有两个 web 应用程序(web-module1.war 和 web-module2.war),我想使用 web 片段(web-core.jar)来声明常见的 servlet,比如 FacesServlet。

当我在 web.xml 中声明 FacesServlet 时没有问题,但是当我将此声明移动到 web-fragment.xml 时,我收到此错误:

我对其他 servlet/filter 声明没有这个问题!

web-fragment.xml 位于 web-core.jar 的 META-INF 文件夹以及 faces-config.xml 中。

web-core.jar 被声明为 maven 依赖项(我可以在 WEB-INF/lib 中找到它)。

这是 web.xml :

和 web-fragment.xml :

我正在使用Tomcat7

0 投票
0 回答
1045 浏览

jsf - java.lang.ClassCastException:javax.faces.webapp.FacesServlet 不能转换为 javax.servlet.Servlet - 在 OSGI 中

我在 OSGI 框架中添加了必要的包。我想在 OSGI 中查看带有标签的 JSF 页面。页面正在运行,但标签不起作用。例如我的 index.xhtml 是;

我得到了“测试 JSF1232”,但我没有看到“测试!!!” 并在体内。

我的捆绑包名称是 LastTestWeb 和我的其他捆绑包列表;

我为 jsf 标签导入了一些包。我的清单文件夹是;

和最后一个。这是我的 web.xml ;

为什么它不起作用,我收到此错误:

java.lang.ClassCastException:无法将 javax.faces.webapp.FacesServlet 强制转换为 javax.servlet.Servlet。