我正在使用eclipsejuno,并试图建立一个网站。我正在构建用户界面,我想使用JSF。运行以下代码,当我运行该文件时,信息将正确显示在屏幕上。
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="Stylesheets/flashcard.css" />
<title>Insert title here</title>
</head>
<body>
<f:view>
<h:form>
<h:commandButton value="Click"></h:commandButton>
</h:form>
</f:view>
然而,我读到过这样写代码是更好的做法。此代码只显示一个空白页。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="Stylesheets/flashcard.css" />
<title>Insert title here</title>
</head>
<body>
<f:view>
<h:form>
<h:commandButton value="Click"></h:commandButton>
</h:form>
</f:view>
</body>
</html>
区别很微妙,但在第二个文件中,我没有使用jsp<%@标记,如果这有意义的话。在创建第二个文件时,我选择了JSFxhtml或其他什么。有人知道问题出在哪里吗?
只需将物理视图文件的扩展名从some.jsp
重命名为some.xhtml
。您不需要更改最初使用的URL中的扩展名。如果你用/some.jsf
打开它,那么你应该继续用/some.jsf
打开它。
请注意,我假设您使用的是JSF2,而不是遗留的JSF 1.x。Facelets不是JSF 1.x本机支持的。还要注意,Facelets并不是"一种更好的做法",您必须在JSF2中使用它,因为JSP已被弃用。
另请参阅:
- 我们的JSF wiki页面-包含一个Hello World
- JSF Facelets:有时我看到URL是.JSF,有时是.xhtml。为什么?-可能会消除对扩展的困惑