在哪里放组成组件?(JSF 2.0)

sfr*_*frj 3 java jsf java-ee java-ee-6 jsf-2

我正在继续我的JSF 2.0实践.我认为模板是一件好事,它有很多优点.但是今天我对它有了新的疑问.

我为我的网页创建了一个模板.在模板中,我使用标签 对于不同的部分(这些部分稍后将在一个页面中使用组合标记结合一个或多个定义标记来实现).

<ui:insert name="content" />
Run Code Online (Sandbox Code Playgroud)

同样在模板内部,为了避免在模板中添加太多代码,我创建 标签添加一些其他的xhtml块.

<ui:include src="/languageChanger.xhtml"/>
Run Code Online (Sandbox Code Playgroud)

这是我的文件夹结构的样子:

在此输入图像描述

这一切都像我一样工作,但当我在网址导航到languageChanger.xhtml时,我看到了xhtml的复合块:

在此输入图像描述

我的怀疑是:

- 那些大量独立代码放在正确的位置?或者是错误的,不应该允许用户从URL中看到它?

- 这个地方保存有其他组件,如登录,注册......?

- 为了避免用户直接访问组件,我可以将它放在WEB-INF文件夹中,但是我有一个问题,包含标签找不到路径.我该怎么办?

- 什么是最佳实践,在哪里放置这些独立的代码块?

Bal*_*usC 5

这块独立代码是否放在正确的位置?或者它是错误的,不应该允许用户从URL中看到它?

把它放在某个地方/WEB-INF.容器不允许直接访问此文件夹.


这个地方是否保存有其他组件,如登录,注册......?

我不明白你.也许你想说"安全"而不是"保存"?你对"其他组件"的意思是什么?


为了避免用户直接访问组件,我可以将它放在WEB-INF文件夹中,但是我有一个问题,包含标签找不到路径.我该怎么办?

你的道路显然是完全错误的.可以完美地放置Facelet模板,包括标签和合成(非复合组件)/WEB-INF.


什么是最佳实践,在哪里放置这些独立的代码块?

把它放进去/WEB-INF.最佳做法是使用绝对路径,即启动路径/.它将相对于webcontent根进行解析.例如

<ui:include src="/WEB-INF/languageChanger.xhtml" />
Run Code Online (Sandbox Code Playgroud)

只能放入"主"页面(URL请求的页面)/WEB-INF.