tomcat7 + El2.2 + jsf1.2无法正常工作

时间:2011-11-14 07:49:45

标签: jsf el tomcat7 myfaces

使用jsf1.2

表达式语言在tomcat7中不起作用。#{message.name_prompt}#{message.name_prompt}括起来。

我尝试用 el-api-2.2.jar 替换tomcat lib文件夹中的 el-api.jar ,然后输入 el-impl- 2.2.jar 在WEB-INF / lib文件夹中添加

<context-param>
    <param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name>
    <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>

web.xml 。还是一样。

我的tomcat确切版本是* 7.0.21 *这是带有默认tomcat设置的web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
    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"
    id="WebApp_ID" version="3.0">
<display-name>BasicExamples</display-name>

 <context-param>
  <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
  <param-value>server</param-value>
 </context-param>

 <listener>
  <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
 </listener>
 <!-- Faces Servlet -->
 <servlet>
  <servlet-name>Faces Servlet</servlet-name>
  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <!-- Faces Servlet Mapping -->
 <servlet-mapping>
  <servlet-name>Faces Servlet</servlet-name>
  <url-pattern>*.jsf</url-pattern>
 </servlet-mapping>
 <login-config>
  <auth-method>BASIC</auth-method>
 </login-config>
</web-app>

更新 现在我发现表达式语言不在表单页面上工作,但是消息表达式语言正在#{message.result_text} =&gt; You entered the following information:但仍然是托管bean无效。 并且 El 与jsf2.0

一起正常工作

1 个答案:

答案 0 :(得分:1)

您无需安装/添加任何内容即可让EL 2.2在Tomcat 7中运行。已经附带EL 2.2。删除那些JAR和上下文参数。

鉴于你的症状

  

#{message.name_prompt}被视为#{message.name_prompt}

我的印象是你在谈论在模板文本中使用EL,如:

<p>This is EL in template text #{message.name_prompt}</p>

这是 EL 2.2功能。这是Facelets功能。 Facelets是JSP的继承者。您需要使用Facelets替换JSP,以便能够在模板文本中使用EL。对于JSF 1.2,您可以使用Facelets 1.1

否则,当你想坚持使用JSP时,你真的需要使用<h:outputText>

<p>This is EL in template text <h:outputText value="#{message.name_prompt}" /></p>

唯一新的EL 2.2功能是能够使用参数调用操作方法,例如:

<h:dataTable value="#{bean.list}" var="item">
    <h:column>
        <h:commandButton value="Edit" action="#{bean.edit(item)}" />
    </h:column>
</h:dataTable>

另见: