JSF 2 简介: 后来添加的 Ajax 复合组件
2010-07-13 00:00:00 来源:WEB开发网请注意,侦听器会获取对 fontSettings 托管 bean 的引用。它通过获取对 Expression Language Resolver 的引用来完成此任务,只要给定了托管 bean 的名称,后者知道如何找到它们。fontSettings bean 如清单 3 所示:
清单 3. 字体设置 bean (com/clarity/FontSettings.java)
package com.clarity;
import java.io.Serializable;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
@Named
@SessionScoped
public class FontSettings implements Serializable {
private static int INCREMENT = 1;
private int size = 1;
public int getSize() { return size; }
public void setSize(int newValue) { size = newValue; }
public void increment() { size += INCREMENT; }
public void decrement() { size -= INCREMENT; }
}
前面的 3 个清单展示应用程序中除图标复合组件以外的所有代码。接下来将介绍图标复合组件。
实现图标复合组件
图标有 3 个需求:
图像必须是可配置的。
用户单击图像时触发的动作是可配置的。
图标必须支持 Ajax。
在清单 4 中,我满足了前两个需求:
清单 4. <util:icon> 复合组件,版本 1 (/resources/util/icon.xhtml)
<!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://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
<composite:attribute name="image" required="true"/>
<composite:actionSource name="link" targets="#{cc.clientId}:iconForm:link"/>
</composite:interface>
<composite:implementation>
<div id="#{cc.clientId}">
<h:form id="iconForm">
<h:commandLink id="link" immediate="true">
<h:graphicImage value="#{cc.attrs.image}"/>
</h:commandLink>
</h:form>
</div>
</composite:implementation>
</html>
更多精彩
赞助商链接