2014-02-20 71 views
1

我有一個問題。在這個例子中,我試圖製作一個包含模板客戶端代碼的模板。這是一個代碼。JSF。限制直接訪問模板客戶端頁面

這裏的所引用:

<?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> 

而這裏的模板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> 

我的問題是:我所有的源代碼,例如,爲什麼當我試圖打開URL直接指定模板client.xhtml的名字,我有XML輸出豆的名字,標籤等等。有什麼辦法可以防止直接訪問template-client.xhtml嗎?

回答

1

默認情況下,.xhtml頁面未映射到FacesServlet。您必須在web.xml中顯式定義url映射。當沒有映射到FacesServlet時,它們只是簡單地返回而不進行任何處理(因此您可以看到facelet代碼)。

如果您不希望某人能夠直接訪問Web應用程序中的資源,則還必須將其移動到WEB-INF文件夾下的某個位置。我通常會將我的所有模板放在此文件夾下(例如/WEB-INF/templates/)。

+0

工作,謝謝。 – safokoi