将Jsf1.0升级到Jsf2.0时的问题

时间:2010-11-30 07:22:21

标签: jsf-2

将应用程序升级到在Spring3和Jsf1.0(myfaces)中创建的Jsf2.0时,我遇到了下面提到的一些问题。

我已完成以下步骤来升级应用程序。

来自IntelliJ IDEA:

* Open project settings/Monitor/Dependencies
*  Removed facelet*jar, el*.jars, myfaces* jars from project 
*  Added jsf2.0.x ri mojarra jars and tomahawk1.1.9.jar  
*  Open project settings/monitor/web settings
*  Under "modules and libs to package": remove el-.jars,facelet-jar and myfaces jars
*  Added jsf2.0.x ri mojarra jars and tomahawk1.1.9.jar  
*  Removed erroneous class usages from our classes Lists.java and RegExValidator.java. In Lists.java, replace import with org.apache.commons.lang.LocaleUtils. In RegExValidator, replace import with "org.apache.myfaces.shared_tomahawk.util.MessageUtils".

编辑Web.xml:

*  facelets.VIEW_MAPPINGS -> javax.faces.FACELETS_VIEW_MAPPINGS
*  facelets.LIBRARIES -> javax.faces.FACELETS_LIBRARIES
* Change Faces Servlet to <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
* Change header to:

  <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">

编辑faces-config.xml:

*  Add header:

          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_2_0.xsd"

          version="2.0">

*  Remove line "<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>"

完成上述所有步骤后,出现以下错误:

  

为属性actionListener指定了一个文字值,该值被定义为返回类型为void的延迟方法。在这种情况下,JSP.2.3.4不允许使用文字值

实际上Jsf2.0 el表达式#{myBean.property}没有得到解决,这就是它显示上述错误的原因。

任何人都可以指导我,缺少什么,以便我可以成功地将应用程序迁移到Jsf2.0

先谢谢, Dhillon

2 个答案:

答案 0 :(得分:0)

  

为属性actionListener指定了一个文字值,该值被定义为返回类型为void的延迟方法。在这种情况下,JSP.2.3.4不允许使用文字值

此EL验证错误意味着您在某处

<h:commandButton actionListener="somestring" />

而不是

<h:commandButton actionListener="#{someBean.actionListener}" />

<h:commandButton action="somestring" />

(而不是h:commandButton您还可以阅读任何UICommand组件,例如h:commandLink

只需找到/查找代码中的罪魁祸首并相应地修复它。

答案 1 :(得分:0)

web-app version="3.0"升级到最新版本。以前的web-app版本是2.5,那时我得到了错误,升级到3.0问题后解决了。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
    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_3_0.xsd">
  <display-name></display-name> 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>