我有一个问题。在这个例子中,我正在尝试制作一个包含模板客户端代码的模板。这是一个代码。
这是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:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<head>
<title></title>
</head>
<body>
<h:form>
<ui:include src="template-client.xhtml"/>
</h:form>
</body>
</html>
这是template-client.xhtml。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:panelGrid columns="1">
<f:facet name="row">
<h:commandButton value="template" action="template.xhtml" />
</f:facet>
</h:panelGrid>
</ui:composition>
我的问题是:为什么当我尝试打开直接指定template-client.xhtml名称的URL时,我的XML输出包含我的所有源代码,例如:豆的名称,标签等。有没有办法阻止直接访问template-client.xhtml?
答案 0 :(得分:2)
默认情况下,.xhtml
页面未映射到FacesServlet。您必须在web.xml中显式定义url映射。如果没有映射到FacesServlet,只需返回它们而不进行任何处理(因此您会看到facelet代码)。
如果您不希望某人能够直接访问Web应用程序中的资源,您还必须将其移动到WEB-INF
文件夹下的某个位置。我通常会将所有模板放在此文件夹下(例如/WEB-INF/templates/
)。