我觉得我错过了一些东西 - 从看起来似乎,JSP开箱即用,支持标签,因为这个问题的答案显示(那家伙问的是一个纯粹的jsp问题,得到了一个涉及标签的答案).但是,如果我尝试运行给定的代码
<c:out value="${myString}"/>
Run Code Online (Sandbox Code Playgroud)
(myString当然,在定义之前),jsp只是将上面的行写入html.
我是否必须做一些额外的事情来启用它?
Mojarra 2.2.12
以下是接管FacesContext实例化的代码片段:
FacesContext context = facesContextFactory.getFacesContext
(servletConfig.getServletContext(), request, response, lifecycle);
Run Code Online (Sandbox Code Playgroud)
表达非常清楚.获得请求后,我们从中获取全局信息并FacesContext使用它创建实例.因此,为每个请求创建实例.但在facesContextFactory我看来,获得这种感觉更加棘手.
// Acquire our FacesContextFactory instance
try {
facesContextFactory = (FacesContextFactory)
FactoryFinder.getFactory
(FactoryFinder.FACES_CONTEXT_FACTORY);
} catch (FacesException e) {
//others
}
Run Code Online (Sandbox Code Playgroud)
哪里
String javax.faces.FactoryFinder.FACES_CONTEXT_FACTORY = "javax.faces.context.FacesContextFactory"
Run Code Online (Sandbox Code Playgroud)
JavaDocs用于FactoryFinder描述所谓的
JavaServer Faces API中指定的所有工厂对象的标准发现算法.
这就是我感到困惑的地方.
现在,让我们考虑创建工厂实例的实际方法:javax.faces.FactoryFinderInstance #getFactory(String factoryName)
try {
factoryOrList = factories.get(factoryName);
if (!(factoryOrList instanceof List)) {
return factoryOrList;
}
} finally {
lock.readLock().unlock();
}
Run Code Online (Sandbox Code Playgroud)
该factories字段初始化如下copyInjectionProviderFromFacesContext():
private void copyInjectionProviderFromFacesContext() { …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 Wildfly 服务器上的旧版 Java EE 应用程序升级到 Jakarta EE 8。由于 8 尚未将软件包名称交换为 jakarta,因此大部分升级都很顺利。但是,我们的一些代码使用 Oracle com.sun.faces 包中的类。这些类似乎包含在 Jakarta EE Faces API规范中,但当我使用以下 Maven 依赖项时,它们不包含在我们的项目中:
<dependency>
<groupId>jakarta.faces</groupId>
<artifactId>jakarta.faces-api</artifactId>
<version>2.3.2</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
为了将它们放入类路径中,我必须使用 Oracle 依赖项:
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.2.20</version>
<scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
显然,我们希望在某个时候完全放弃使用这个包,但我希望有一种方法可以将其包含在我们的雅加达迁移中。
我一直在徒劳地尝试实现 tomcat 9 的 jakarta servlet,而不是以前的 javax.servlet 实现(因为我的理解是 jakarta 包是前进的方向)。问题是,当我将浏览器指向我的 servlet 的 url 时,我收到以下错误...
java.lang.ClassCastException: class cti.nm.web.Index cannot be cast to class javax.servlet.Servlet (cti.nm.web.Index is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @48c76607; javax.servlet.Servlet is in unnamed module of loader java.net.URLClassLoader @621be5d1)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:432)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:832)
Run Code Online (Sandbox Code Playgroud)
问题已经很明显了。Tomcat 正在尝试将我的 jakarta.servlet.http.HttpServlet 转换为 javax.servlet.Servlet,这显然不起作用。我无法想象的是如何告诉它 servlet 实际实现的类。
类本身被声明为...
package cti.nm.web;
import jakarta.servlet.http.HttpServlet;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
public class Index extends …Run Code Online (Sandbox Code Playgroud) 我在这里不知所措!
我从这个链接 下载了Java EE 7 SDK http://www.oracle.com/technetwork/java/javaee/downloads/java-ee-sdk-7-downloads-1956236.html
在安装过程中。我被迫安装GlassFish。与Java SE安装不同,我无法选择Java EE库的位置!
现在我只剩下GlassFish 了!我知道我迟早必须将我的应用程序部署到应用程序服务器中,但我只需要将Java EE库包含到我的 Eclipse java 项目中(甚至不是 eclipse web 项目。我使用ant组装我的WAR)。
我相信我可以继续将Java EE库包含在我的Run-Jetty-Run(从Eclipse运行 jetty 的Eclipse插件)运行配置类路径中,并且毫无问题地启动我的应用程序。
所以我的问题是:
我试图用最少的抽象来做事情,以了解更多并了解真正发生的事情。这就是为什么我更喜欢使用来自常规Eclipse java …
我是JavaEE和Spring Framework的新手.我很难理解如何只使用Spring Framework编写应用程序.我已经在互联网上看到,Spring Framework的目的是使企业级应用程序的开发更简单,而不是EJB开发(主要在EJB 2.x系列中).
使用JavaEE,我们有许多技术,如:1)EJB 2)JCP 3)JTA 4)JPA等.
在阅读Spring Framework时,我开始使用依赖注入,Spring AOP,Spring MVC(以及我正在阅读的其他人).
我很难理解如何使用Spring DI/AOP/MVC来制作成熟的企业应用程序?我从其中一篇帖子中读到,例如,对于事务管理,我们可以使用Spring自己的事务管理或使用JTA.我相信JTA是JavaEE的一部分,如果我们最终使用JavaEE的技术,那么Spring如何简化生活?
任何有助于我清楚这一点的答案都非常感谢.
我正在使用Eclipse Luna和JBoss AS 7.当我在Eclipse中创建JSP页面时,我得到以下错误:

我将服务器更改为Tomcat 7,但仍然遇到同样的错误.
这是怎么造成的,我该如何解决?
编译Java文件时,我收到此错误消息:
error: package javax.servlet does not exist
Run Code Online (Sandbox Code Playgroud)
我为Jave EE SDK安装了一个大的.SH文件,Java版本给了我这个:
java version "1.7.0_10"
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
Run Code Online (Sandbox Code Playgroud)
我需要安装其他东西吗?
我使用Tomcat 7作为Servlet容器,/Library/Tomcat/
并使用命令行进行简单的文本编辑器.
当文档(行)插入MongoDB集合时,尝试让EJB通知我的XHTML JSF页面.
由于我之前的问题的答案得到了JSF 2.3的工作:
然而,在将服务器端代码添加到我的EJB并尝试将我的EAR部署到WildFly 12.0.0.Final之后,我得到了一个用于PushContext的java.lang.ClassNotFoundException:
Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class com.notifywell.ejb.FoodsCosmeticsMedicinesEJB with ClassLoader ModuleClassLoader for Module "deployment.NOTiFYwell.ear.NOTiFYwellJAR.jar" from Service Module Loader
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
at java.lang.Class.getDeclaredFields(Class.java:1916)
at org.jboss.as.server.deployment.reflect.ClassReflectionIndex.<init>(ClassReflectionIndex.java:72)
at org.jboss.as.server.deployment.reflect.DeploymentReflectionIndex.getClassIndex(DeploymentReflectionIndex.java:70)
... 13 more
Caused by: java.lang.ClassNotFoundException: javax.faces.push.PushContext from [Module "deployment.NOTiFYwell.ear.NOTiFYwellJAR.jar" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:199)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:412)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:400)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
... 18 more
Run Code Online (Sandbox Code Playgroud)
在EJB中使用:
@Inject
@Push
private PushContext push;
Run Code Online (Sandbox Code Playgroud)
包含在:
jboss-jsf-api_2.3_spec-2.3.3.SP1.jar
Run Code Online (Sandbox Code Playgroud)
当我添加@Inject到@Push.时会发生这种情况.
WildFly 12和/或JSF …
我正在尝试使用Java 7和Tomcat 7构建JSF/Hibernate应用程序.我已经安装了Java SDK和JavaEE SDK,并将javaee.jar和javaee-api-6.jar复制到我的Tomcat LIB文件夹中.通过我对这篇文章和这篇文章的理解,我应该拥有我需要的所有罐子,据我所知,我在这个文件夹中没有其他罐子,这些罐子有相互冲突的资源.
javaee.jar文件包含看起来像Maven pom文件的内容,没有别的.我不确定它的价值是什么.
我的javaee-api-6 jar大小约为950k,包含了我期望的所有.class文件.我正在使用的代码编译得很好,我只在尝试部署到Tomcat时看到错误.这些罐子来自玻璃鱼装置.奇怪的是文件ServletException.class文件只有366个字节.
我在Eclipse中设置了Tomcat,以便IDE在部署时"接管"Tomcat,而不是部署到某个插件文件夹(默认行为).
我正在使用的唯一相关包是来自javax.persistence的'Entity''Id'和'GeneratedValue'.
我只尝试使用javaee-api-6.jar,并更名javaee-api.jar并javaee.jar没有变化.看起来它的文件名并不重要.
对Glassfish lib文件夹的深入检查确实显示了许多相关外观的jar,但不是完整的javaee包,所以我无法将Javaee-api-6.jar移出并移动它们,它们是不完整的,我得到了一个类似的错误表明(我假设)某些类的实现无法找到.
所以我的问题是:我需要在Tomcat 7中包含什么才能使javax.persistence正常工作?
java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/ServletException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.getDeclaredMethods0(Native …Run Code Online (Sandbox Code Playgroud) 我一直在计算机上使用eclipse开发JSP,servlet,applet,独立应用程序和其他java代码.最近,java作为其他成功的防病毒程序的一部分从我的计算机中删除.
现在,当我尝试加载eclipse时,我得到的消息是我的系统没有jre或jdk.
当我尝试下载java ee时,我只能找到这些下载选项,它们承诺提供java ee sdk.
但是,当我下载并运行安装文件时,安装程序会在整个过程中途停止,告诉我无法继续,因为我的计算机上没有找到jdk.它要求我手动指向jdk,但我不能这样做,因为我的机器上没有jdk.我能找到的唯一的jdk下载站点是这个,用于java se. 但是我需要java EE来开发jsp,servlets,applets等.
我没有找到任何解释如何整合这两者的信息.在过去,我似乎记得只能做一个java下载.
谁能告诉我如何下载java EE jdk?
我想开发一个 JSF 2 Web 应用程序,但我对设置环境文件(即 web.xml 和 faces-config.xml)感到困惑
我想使用 JSF 2 (.xhtml)、Tomcat 9.0 和 Open JDK 11.0.2
我看过这个页面:http://tomcat.apache.org/whichversion.html但我不清楚这些列的确切含义,特别是(对于 Tomcat 9.0.31 行)
Servlet Spec 4.0:这是否意味着我必须在 web.xml 文件中设置 web-app version =“4.0”?JSP Spec 2.3:我应该设置什么?EL 3.0 规范:这是否意味着我必须在 faces-config.xml 文件中设置 faces-config version = "3.0" ?
谢谢你!