我第一次尝试使用JSF Facelet模板/ Facelet模板客户端。我正在使用Netbeans 7.2.1创建模板和模板客户端。当我运行创建的JSF项目并调用http://localhost:8080/jpaweb/template.xhtml
时,我可以看到模板样式,但是当我调用客户端模板http://localhost:8080/jpaweb/client.xhtml
时,我看到没有样式的纯文本。这两个文件都在Netbeans向导的同一目录中。请帮我解决这个问题。
的template.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="./resources/css/default.css" rel="stylesheet" type="text/css" />
<link href="./resources/css/cssLayout.css" rel="stylesheet" type="text/css" />
<title>Facelets Template</title>
</h:head>
<h:body>
<div id="top" class="top">
<ui:insert name="top">Top</ui:insert>
</div>
<div>
<div id="left">
<ui:insert name="left">Left</ui:insert>
</div>
<div id="content" class="left_content">
<ui:insert name="content">Content</ui:insert>
</div>
</div>
</h:body>
</html>
client.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets">
<body>
<ui:composition template="./template.xhtml">
<ui:define name="top">
Welcome, to my website
</ui:define>
<ui:define name="left">
My links
</ui:define>
<ui:define name="content">
This page is created for testing
</ui:define>
</ui:composition>
</body>
</html>
如果你有Netbeans创建JSF项目和JSF模板和模板客户端将获得这个结果。我也试过Netbeans 1.7.0。同样的问题。
编辑:我运行的页面不像http://localhost:8080/jpaweb/client.xhtml
,但像http://localhost:8080/jpaweb/faces/client.xhtml
一样有效。我的项目中没有“faces”目录。我们是否必须为所有JSF链接添加“面孔”?
编辑2:我认为netbeans自动配置所有jsf文件保存在faces目录中,即使我的项目中没有这样的目录。在项目属性中 - &gt;框架 - &gt; JavaServer Faces - &gt;配置有字段JSF Servlet URL Pattern,其值为/ faces / *。我认为这意味着必须调用jsf文件,就像它在faces目录中一样。试图强制它在我的项目中出现的工作是一个错误:)
答案 0 :(得分:1)
解决。将Project properties -> Frameworks -> JavaServer Faces -> Configuration -> JSF Servlet URL Pattern
的值从/faces/*
更改为*.xhtml
,这样就可以了。
答案 1 :(得分:0)
您的 client.xhtml 内容文件未正确撰写。不要包含html标记,因为JSF不会解析ui:composition
标记中的任何内容。
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
template="./template.xhtml">
<ui:define name="top">
Welcome, to my website
</ui:define>
<ui:define name="left">
My links
</ui:define>
<ui:define name="content">
This page is created for testing
</ui:define>
</ui:composition>
我使用您的模板测试过它。