相关疑难解决方法(0)

Faces Servlet抛出异常java.lang.StackOverflowError

好吧,自从加入这个网站以来,我遇到了我的第一个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)

configuration jboss seam web-applications

6
推荐指数
1
解决办法
3万
查看次数

在Servlet 2.4容器上运行JSF 2.0

据我所知,JSF 2需要servlet 2.5,所以它不能在JBOSS 4.05(Tomcat 5.5)上运行.不幸的是,我必须部署一个在该环境中使用JSF 2.0和Primefaces的应用程序.

有什么黑客可以使用吗?

jsf jboss tomcat servlets jsf-2

6
推荐指数
1
解决办法
4518
查看次数

使用Ajax4jsf 1.x将JSF 1.1迁移到JSF 2

我们正在将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时,我们不需要这一切.

jsf richfaces myfaces ajax4jsf jsf-2

6
推荐指数
1
解决办法
4531
查看次数

将JSF 1.2应用程序迁移到JSF 2.0

当前,我的Web应用程序基于以下库/框架/工具:

  • Java 1.6
  • JSF 1.2_07-b03-FCS
  • 小面1.1.14
  • Richfaces 3.3.2.GA
  • EL-Functors 1.0.2
  • 春季2.5.2
  • Tomcat服务器v5.5

一些其他信息:

  • Spring负责管理JSF使用的所有bean(在我的文件中org.springframework.web.jsf.DelegatingVariableResolver定义为)。variable-resolverfaces-config.xml
  • EL-Functors用作my el-resolver来扩展表达语言。
  • 我创建了许多自定义组件,其中一些只是Facelets组成,其他是基于Java的组件(其中有些是Richrichs组件的扩展)。

我想尝试(本质上是出于好奇,但是如果这很好,为什么不真正呢?)将我的应用程序迁移到JSF 2.0。

问题1:为了使我的应用程序正确运行,必须考虑哪些关键点?

我在这里谈论的只是拥有一个正在运行的应用程序,仅此而已,仅此而已。

我已经知道我将必须检查所有自定义组件,因为我将使用新版本的Richfaces(4.0),并查看它们是否正常运行。

问题2:要利用JSF 2.0的第一步是什么?我已经有了一些想法:

  • 删除EL-Functors并使用表达语言2.2;
  • 让JSF管理Bean,并使用@ManagedBean。还是切换到CDI库(例如Weld)
  • <f:ajax>代替<a4j:support>

关于JavaEE6

我知道,一个好主意是完全迁移到JavaEE6。我很喜欢这样做,但是由于某些原因,我不能那样做。一个(不好的)原因是我必须留在Tomcat服务器上。但是,我可以添加新的第三方库以具有某些JavaEE6功能,例如EL 2.2...。因此,请在回答中考虑这一方面。

问候。

jsf

5
推荐指数
1
解决办法
9267
查看次数

JSF.SelectOneMenu和SelectItems

我试图让用户从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

jsf selectonemenu

5
推荐指数
1
解决办法
4万
查看次数

应用程序服务器中的JSF 2问题?

我熟悉在Websphere 7中使用JSF 2时的类加载问题.我想知道其他fullstack应用程序服务器上是否存在类似的问题.那么JBoss 5 +,WebLogi 10+等等呢?JSF 2是否存在任何已知问题,如果是这样,需要做些什么才能让JSF 2在这些服务器上运行?

谢谢

websphere jsf jboss weblogic

4
推荐指数
1
解决办法
7167
查看次数

java.lang.NullPointerException at javax.faces.webapp.UIComponentClassicTagBase.setJspId

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 jsp

4
推荐指数
1
解决办法
2万
查看次数

在JSF2.0中使用注释和使用faces-config.xml之间的差异

JSF 2.0提供了注释.但是在JSF 1.2中我们在faces-config.xml文件中定义了属性.

在JSF 2.0中,我们有两个选项,可以使用注释或使用faces-config.xml.什么是更好的方法?扭曲属性faces-config.xml很容易管理,而在每个文件中编写注释有点不易管理.

jsf-2

3
推荐指数
1
解决办法
1939
查看次数

迭代JSF 1.2中的列表

有没有办法在不使用任何第三方组件的情况下迭代JSF 1.2中的列表?我知道我可以用战斧来做.我也知道可以使用JSTL完成,但我保留这是我的最后手段.我也无法使用,<ui:repeat>因为我们使用的是JSF 1.2.有什么优雅的方式喜欢<ui:repeat>在jsf 1.2中做到这一点吗?

jsf jsf-1.2

3
推荐指数
1
解决办法
3580
查看次数

我应该使用 ui:fragment 和 render 属性来有条件地在带有 JSF 2.2 的 Facelets 中呈现 HTML 标签吗?

我正在将旧项目从 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 元素? …

jsf facelets taglib jsf-2.2

3
推荐指数
1
解决办法
2807
查看次数