JSF variable substitution with binding f:loadBundle
I am trying to create a simple JSF application...
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ pa开发者_如何学Pythonge import="java.util.*"%>
<html>
<head>
<title>Login</title>
<f:loadBundle var="Message" basename="bundle.Messages" />
</head>
<body>
<f:view>
<h:form id="loginForm">
<h:message for="loginForm" />
<br />
<h:outputText value="#{Message.username_label}" ></h:outputText>
</h:form>
</f:view>
</body>
</html>
However, when I try to run the page in my browser, I get the value #{Message.username_label}
. Could someone please help me to understand why the value was not substituted into the page?
So, EL doesn't get evaluated? This can happen when the web.xml
is not properly declared conform at least Servlet 2.4 (for JSF 1.0/1.1) or 2.5 (for JSF 1.2) and/or your classpath is polluted with old versioned servletcontainer specific libraries.
Since you're using legacy JSP instead of its successor Facelets, I'll bet that you're using JSF 1.2 on a Servlet 2.5 container (such as Tomcat 6.0). In this case, you need to ensure that the web.xml
is declared as follows:
<web-app
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd"
version="2.5"
>
<!-- Your config here -->
</web-app>
In addition, you also need to ensure that you don't have any servletcontainer specific libraries like servlet-api.jar
, j2ee.jar
, javaee.jar
, jsp-api.jar
, etc.. in your webapp's /WEB-INF/lib
folder or, worse, in the JRE/lib/ext
folder. Get rid of them, they are supposed to be supplied by the servletcontainer itself, not your webapp. The /WEB-INF/lib
folder should contain only the JSF libraries and other libraries specific to the webapp itself.
It is obvious to me. is not a complied staememnt in java therfore the foundation of core cant encrypt it. the id is not being compiled because you have it in these <> do you know java?
精彩评论