EL выражения не оцениваются на странице JSP JSF - PullRequest
1 голос
/ 06 июня 2011

Мой файл inputname.jsp

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> 
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> 

<html> 
<head> 
<title>enter your name page</title> 
</head> 
<body> 
<f:view> 
<h1> 
<h: outputText value="JSF 1.2 Tutorial"/> 
</h1> 
<h:form id="UserEntryForm"> 
<h: outputText value="Enter Your Name:"/> 
<h:inputText value="#{UserBean.userName}" /> 
<h:commandButton action="welcome" value="OK" /> 
</h:form> 
</f:view> 
</body> 
</html> 

My welcome.jsp file 
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> 
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> 
<html> 
<head> 
<title>Welcome</title> 
</head> 
<body> 
<f:view> 
<h3> 
<h: outputText value="Welcome" />, 
<hutputText value="#{UserBean.userName}" /> to JSF 1.2 World! 
</h3> 
</f:view> 
</body> 
</html> 

мой файл web.xml

<?xml version='1.0' encoding='UTF-8'?> 
<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd"> 


<web-app> 

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

</web-app> 

мой файл настроек лиц

<?xml version='1.0' encoding='UTF-8'?> 

<!DOCTYPE faces-config PUBLIC 
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" 
"http://java.sun.com/dtd/web-facesconfig_1_1.dtd"> 

<faces-config> 

<navigation-rule> 
<from-view-id>/user/inputname.jsp</from-view-id> 
<navigation-case> 
<from-outcome>welcome</from-outcome> 
<to-view-id>/user/welcome.jsp</to-view-id> 
</navigation-case> 
</navigation-rule> 
<managed-bean> 
<managed-bean-name>UserBean</managed-bean-name> 
<managed-bean-class>net.roseindia.UserNameBean</managed-bean-class> 
<managed-bean-scope>request</managed-bean-scope> 
</managed-bean> 

</faces-config> 

мой файл UserNameBean.java

package net.roseindia; 

public class UserNameBean { 

String userName; 

/** 
* @return User Name 
*/ 
public String getUserName() { 
return userName; 
} 

/** 
* @param User Name 
*/ 
public void setUserName(String name) { 
userName = name; 
} 
} 

когда я открываю inputname.jsf, я получаю

Enter your name: #{UserBean.userName} 

вместо того, чтобы оценивать userbean.username, это просто печатается, то же самое происходит в welcome.jsf, я получаю Welcome, # {UserBean.userName} в JSF 1.2 World!

что я делаю не так Пожалуйста, помогите Кришан

Ответы [ 2 ]

4 голосов
/ 06 июня 2011

Использование JSF 1.2 в JSP требует как минимум контейнера Servlet 2.5 из-за изменений в EL (EL был перенесен из JSF 1.1 в JSP 2.1, который является частью Servlet 2.5). Вам необходимо убедиться, что вы запускаете свое веб-приложение JSF 1.2 в совместимом с Servlet 2.5 контейнере с web.xml, который, как заявлено, соответствует спецификации Servlet 2.5 (или, что лучше, максимум того, что поддерживает ваш контейнер). Ваш web.xml объявлен в соответствии с сервлетом 2.3, что подразумевает другую версию EL и, следовательно, выражения EL не будут оцениваться.

<?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_2_5.xsd"
    version="2.5">

    <!-- Config here. -->

</web-app>

Обратите внимание, что ваш faces-config.xml неправильно объявлен как JSF 1.1. Вы хотите переопределить его как JSF 1.2, чтобы полностью использовать возможности JSF 1.2.

<?xml version="1.0" encoding="UTF-8"?>
<faces-config 
    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-facesconfig_1_2.xsd"
    version="1.2">

    <!-- Config here. -->

</faces-config>

И последнее, но не менее важное: Roseindia.net является одним из WORST учебных ресурсов для Java EE . Вы должны действительно поместить этот сайт в свой черный список. Ищите другой учебный ресурс. Проверьте раздел «Ресурсы» https://stackoverflow.com/tags/jsf/info

0 голосов
/ 06 июня 2011

Добавьте правильную версию в ваш web.xml

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd" id="WebApp_ID" version="2.4">
...