我正在尝试创建一个简单的JSF应用程序...
<!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"%>
<%@ page 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>
但是,当我尝试在浏览器中运行该页面时,我得到的值#{Message.username_label}
.有人可以帮助我理解为什么没有将值替换到页面中吗?
那么,EL 没有得到评估?当web.xml
未正确声明至少符合 Servlet 2.4(对于 JSF 1.0/1.1(或 2.5(对于 JSF 1.2(和/或您的类路径被旧版本化的 Servletcontainer 特定库污染时,可能会发生这种情况。
由于您使用的是遗留的JSP而不是其后继的Facelets,我敢打赌,您在Servlet 2.5容器(例如Tomcat 6.0(上使用JSF 1.2。在这种情况下,您需要确保按如下方式声明web.xml
:
<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>
此外,您还需要确保在Web应用程序的/WEB-INF/lib
文件夹中没有任何特定于servletcontainer的库,例如servlet-api.jar
,j2ee.jar
,javaee.jar
,jsp-api.jar
等,或者更糟的是,在JRE/lib/ext
文件夹中。摆脱它们,它们应该由servletcontainer本身提供,而不是你的web应用程序。/WEB-INF/lib
文件夹应仅包含 JSF 库和特定于 Web 应用程序本身的其他库。
这对我来说很明显。 在Java中不是一个兼容的staememnt,因此核心的基础无法加密它。ID没有被编译,因为你在这些<>你有它你知道Java吗?