好吧,自从加入这个网站以来,我遇到了我的第一个StackOverflowError,我认为这是必须的帖子:-).我的环境是Seam 2.0.1.GA,JBoss 4.2.2.GA,我正在使用JSF.我正在从facelets视图转换为JSP,以利用现有站点上使用的一些现有JSP标记.我更改了faces-config.xml和web.xml配置文件,并在尝试呈现jsp页面时开始收到以下错误.有人有什么想法?
2008-09-17 09:45:17537 DEBUG [org.jboss.seam.contexts.FacesLifecycle]开始为/form_home.jsp 2008-09-17 09 JSF请求:45:17587 ERROR [org.apache.catalina.core. ContainerBase.[jboss.web].[本地主机].[/].[面临的Servlet]为的servlet] Servlet.service()面临的Servlet抛出异常java.lang.StackOverflowError的在org.apache.catalina.core.ApplicationHttpRequest.getAttribute( ApplicationHttpRequest.java:210)在org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:222)在org.apache.catalina.core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:222)在org.apache.catalina .core.ApplicationHttpRequest.getAttribute(ApplicationHttpRequest.java:222)...
我的faces-config.xml文件现在为空,没有FaceletsViewHandler:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
</faces-config>
Run Code Online (Sandbox Code Playgroud)
我的Web.xml文件:
<?xml version="1.0"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- Ajax4jsf -->
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>blueSky</param-value>
</context-param>
<!-- Seam -->
<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
<filter>
<filter-name>Seam Filter</filter-name>
<filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Seam Filter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>Seam Resource Servlet</servlet-name>
<servlet-class>org.jboss.seam.servlet.SeamResourceServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Seam Resource Servlet</servlet-name>
<url-pattern>/seam/resource/*</url-pattern>
</servlet-mapping>
<!-- Seam end -->
<!-- JSF --> …Run Code Online (Sandbox Code Playgroud) 据我所知,JSF 2需要servlet 2.5,所以它不能在JBOSS 4.05(Tomcat 5.5)上运行.不幸的是,我必须部署一个在该环境中使用JSF 2.0和Primefaces的应用程序.
有什么黑客可以使用吗?
我们正在将JSF 1.1(MyFaces)项目迁移到JSF 2.我们的想法是通过将JSP和XHTML保持在一起一段时间来定期迁移.我们在JSP页面中使用了许多ajax4jsf-1.1.1标记.我们不使用RichFaces.将系统配置为JSF 2(Balusc教程中提到的所有配置更改)当尝试在类路径中使用ajax4jsf.jar访问JSP页面时,我们得到一个异常:
Caused by: java.lang.IllegalStateException: setViewHandler may not be executed after a lifecycle request has been completed
at org.apache.myfaces.application.ApplicationImpl.setViewHandler(ApplicationImpl.java:853)
at org.ajax4jsf.framework.ajax.InitPhaseListener.beforePhase(InitPhaseListener.java:92)
at org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersBefore(PhaseListenerManager.java:76)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:131)
Run Code Online (Sandbox Code Playgroud)
它看起来ajax4jsf.jar与JSF 2不兼容.看起来LifeCycle配置存在一些问题.
有没有什么办法可以让a4j与JSF 2 JSP一起工作?我知道当我们使用XHTML时,我们不需要这一切.
当前,我的Web应用程序基于以下库/框架/工具:
一些其他信息:
Spring负责管理JSF使用的所有bean(在我的文件中org.springframework.web.jsf.DelegatingVariableResolver定义为)。variable-resolverfaces-config.xmlEL-Functors用作my el-resolver来扩展表达语言。我想尝试(本质上是出于好奇,但是如果这很好,为什么不真正呢?)将我的应用程序迁移到JSF 2.0。
问题1:为了使我的应用程序正确运行,必须考虑哪些关键点?
我在这里谈论的只是拥有一个正在运行的应用程序,仅此而已,仅此而已。
我已经知道我将必须检查所有自定义组件,因为我将使用新版本的Richfaces(4.0),并查看它们是否正常运行。
问题2:要利用JSF 2.0的第一步是什么?我已经有了一些想法:
EL-Functors并使用表达语言2.2;@ManagedBean。还是切换到CDI库(例如Weld)?<f:ajax>代替<a4j:support>?关于JavaEE6
我知道,一个好主意是完全迁移到JavaEE6。我很喜欢这样做,但是由于某些原因,我不能那样做。一个(不好的)原因是我必须留在Tomcat服务器上。但是,我可以添加新的第三方库以具有某些JavaEE6功能,例如EL 2.2...。因此,请在回答中考虑这一方面。
问候。
我试图让用户从JSF的下拉列表中选择一个集合的项目.这是我正在使用的代码:
<f:view>
<h:form id="insert">
<h:selectOneMenu value="#{MyBean.user}">
<f:selectItems value="#{MyBean.userList}" var="currentUser" itemValue="#{currentUser.username}" itemLabel="#{currentUser.username}"/>
</h:selectOneMenu>
<h:commandButton value="Insert" action="#{AuctionBean.insertItem}"/><br>
</h:form>
</f:view>
Run Code Online (Sandbox Code Playgroud)
这是MyBean的代码:
@ManagedBean
public class MyBean{
private String user;
private Collection<User> userList;
@PostConstruct
public void init() {
this.userList = UserRepository.getInstance().findAllUsers();
}
...
public String insertItem() {
System.out.println("The selected user is " + this.user);
...
return ("successfulInsertion");
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果需要我的用户的getter和setter:
public String getUser() {
return this.user;
}
public void setUser(String user) {
this.user = user;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当它打印"所选用户是"时,没有编写user.toString(),而是userList.toString()!这就像selectOneMenu没有正确设置,但我搜索了很多.有人可以帮忙吗?谢谢,AN
我熟悉在Websphere 7中使用JSF 2时的类加载问题.我想知道其他fullstack应用程序服务器上是否存在类似的问题.那么JBoss 5 +,WebLogi 10+等等呢?JSF 2是否存在任何已知问题,如果是这样,需要做些什么才能让JSF 2在这些服务器上运行?
谢谢
I have read this tutorials it's an ebook and I'm stuck at deploying the JSP page to my tomcat server by the way it's a jsp page but it's using JSF tags I already put my javax.faces-2.1.13 jar at the lib, where is should really belong to..
Here is my JSP page title hello.jsp:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<html>
<head>
<title>JSF In Action</title>
</head>
<body>
<f:view>
<h:form id="welcome-form"> …Run Code Online (Sandbox Code Playgroud) JSF 2.0提供了注释.但是在JSF 1.2中我们在faces-config.xml文件中定义了属性.
在JSF 2.0中,我们有两个选项,可以使用注释或使用faces-config.xml.什么是更好的方法?扭曲属性faces-config.xml很容易管理,而在每个文件中编写注释有点不易管理.
有没有办法在不使用任何第三方组件的情况下迭代JSF 1.2中的列表?我知道我可以用战斧来做.我也知道可以使用JSTL完成,但我保留这是我的最后手段.我也无法使用,<ui:repeat>因为我们使用的是JSF 1.2.有什么优雅的方式喜欢<ui:repeat>在jsf 1.2中做到这一点吗?
我正在将旧项目从 JSF 1.1 升级到 JSF 2.2。具体来说,我将 JSF 实现从 MyFaces 1.1 升级到 MyFaces 2.2.12,用 Facelets 替换 JSP 并升级/替换过时的标签库。我主要使用从 JSF 1.2 迁移到 JSF 2.0作为指南。
该项目使用了一些在其 JSP 页面中htmLib使用命名空间调用的标记库http://jsftutorials.net/htmLib。我再也找不到关于这个标签库的任何文档,无论是在 jsftutorials 网页还是其他地方,但显然它被用来包含像JSP 页面<div>或<table>在 JSP 页面中的纯 HTML 标签。
由于现在可以在带有 JSF2 的 XML Facelets 中使用纯 HTML 标记,因此我现在正在从htmLibtaglib 中删除所有出现的标记,<htm:div>...</htm:div>例如<div>...</div>.
但是,从使用的一些标签htmLib包含render用于条件渲染的属性,如下所示:
<htmLib:h4 render="someCondition">
...
</htmLib:h4>
Run Code Online (Sandbox Code Playgroud)
因为纯 HTML 标签没有render用于此目的的属性,所以我正在寻找一种有条件地呈现纯 HTML 标签的替代方法,并在 SO 上偶然发现了这个答案:如何有条件地呈现像 <div> 这样的纯 HTML 元素? …