JSF。限制直接访问模板客户端页面

标签 jsf jsf-2 jsf-2.2

我有一个问题。在此示例中,我尝试制作一个包含模板客户端代码的模板。这是一个代码。

这是 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 输出,例如beans的名称、标签等。有没有办法阻止直接访问template-client.xhtml?

最佳答案

默认情况下,.xhtml 页面不会映射到 FacesServlet 。您必须在 web.xml 中显式定义 url 映射。当未映射到 FacesServlet 时,它们只是返回而不进行任何处理(因此您会看到 Facelet 代码)。

如果您不希望其他人能够直接访问 Web 应用程序中的资源,您还必须将其移动到 WEB-INF 文件夹下的某个位置。我通常将所有模板放在这个文件夹下(例如 /WEB-INF/templates/)。

关于JSF。限制直接访问模板客户端页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21908661/

相关文章:

css - 如何忽略默认的 Richface 样式

javascript - 如何防止元素脱离 DOM 错误?

jsf - 自定义标记属性正在泄漏到子项中

jsf - 写入 h :inputText in h:dataTable 中的 map 属性

jsf - 如何将参数传递给 Primefaces LazyDataModel 加载函数

java - 在 JSF 单页应用程序中导航时出现问题

css - 如何实现带有图像和按钮标签的 JSF 按钮

jsf - javax.el.E​​LException : Could not find property actionMethod in class com. example.Bean

javascript - 使用带有 JSF 的 JavaScript 进行客户端验证

JSF Flash Scope 记住太多消息