我知道资源库契约是为了支持模板而创建的,但即使没有它,也可以通过ui插入模板来轻松实现:在template.xhtml中插入:
<div id="content">
<ui:insert name="content" />
</div>
可以在Web应用程序根目录下使用“模板”目录,而不是创建“合同”目录。
那么,使用合同有什么好处?
答案 0 :(得分:3)
嗯,你知道,流程和资源库合同都是 显然,功能强大。资源库合同是 如果你处于你想要的状态,那真的非常强大 支持移动和桌面客户端,因为您可以切换 在您刚定义的一组模板之间来回切换。所以 这是一个非常强大的功能。
希望人们看到这一点。但关于它的好处,它是一个 可堆叠的功能。那意味着你实际上可以拥有一个 布局的资源库合同,然后是资源库 最重要的是颜色造型或类似的东西。所以 你可以来回切换 - 我只是用一个例子, 显然 - 蓝色和红色的造型,以及移动与桌面 造型。那么这就是你已经有的四种排列 有。
这是跳出来的另一件事,因为我 - 我确定 你也碰到了这个。我的客户基本上都有产品 他们出售,无论是托管产品还是内部产品 产品。但无论哪种方式,每个客户都想要不同的外观和感觉, 和不同的参数集,以及类似的东西。你可以 在数据库中做了很多,但在某些时候,你想要 实际上更改模板,资源库收缩 使它非常容易使用。所以我觉得这是我的最爱之一 功能也是如此。
资源库合同允许您拥有多个资源库,这些资源库是在JSF 2.0
中引入的,其中包含css,js,images和复合组件。
<ui:inserts name="must have the same attribute value" />
有几种方法可以应用它。
-Web Pages/
--contracts/
---resource-1/
-----template.xhtml
-----css/
-----js/
-----img/
---resource-2/
-----template.xhtml
-----css/
-----js/
-----img/
#1:通过网址格式自动映射视图合同:
在faces-config.xml文件中
<application>
<contract-mapping>
<url-pattern>*</url-pattern>
<contracts>resource-1</contracts>
</contract-mapping>
<contract-mapping>
<url-pattern>/admin/*</url-pattern>
<contracts>resource-2</contracts>
</contract-mapping>
</application>
#2为每个视图设置合约: 这允许用户选择要使用的设计(模板)。
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core">
<f:view contracts="#{templateMB.template}">
<ui:composition template="/template.xhtml">
<ui:define name="content">
<h:form>
<h:selectOneMenu valueChangeListener="#{templateMB.tempEvent}"
onchange="submit()">
<f:selectItem itemLabel="..." itemValue="..."/>
<f:selectItem itemLabel="resource-1" itemValue="resource-1"/>
<f:selectItem itemLabel="resource-2" itemValue="resource-2"/>
</h:selectOneMenu>
</h:form>
</ui:define>
</ui:composition>
</f:view>
</html>
托管bean的位置为:
@ManagedBean
@SessionScoped
public class TemplateMB {
private String template = "resource-1"; // make default
public TemplateMB() {
}
public void tempEvent(ValueChangeEvent e){
template = (String) e.getNewValue();
}
public String getTemplate() {
return template;
}
}
答案 1 :(得分:0)
要创建多个模板并将其应用于同一应用程序的不同页面,还允许用户选择要应用的模板。