基本自定义 > 用户界面自定义 > 使用 Windchill JSP 框架自定义 HTML 客户端 > 痕迹组件 > 解决方案 > 过程 - 创建新的 BreadCrumbDelegate 类
  
过程 - 创建新的 BreadCrumbDelegate 类
创建 BreadCrumbDelegate 类
痕迹委派类应实现 BreadCrumbDelegate 接口。此接口有两种方法: canHandle()getGenerator()
canHandle() 方法由 BreadCrumbDelegateFactory 调用,以确定委派的内部 AbstractBreadCrumbGenerator 类 (请参阅下文) 是否能够为给定页面生成痕迹。canHandle() 方法会传递页面 URL、URL 中的上下文对象 (如果有) 以及 URL 中的容器对象 (如果有)。该方法应返回 true 或 false。
BreadCrumbController 会调用工厂选择的委派 getGenerator() 方法,以获取其内部 AbstractBreadCrumbGenerator 类的新实例。
* 
由于工厂仅为每个委派创建一个静态实例,因此,委派类本身不应使用类实例变量,也不能以任何方式变为有状态类。
创建 AbstractBreadCrumbGenerator 内部类
您的委派类应具有作为 AbstractBreadCrumbGenerator 子类的内部类。BreadCrumbController 将调用内部类的 getCrumbs() 方法,以生成痕迹的 JSONArray。每次调用此方法时,都将创建内部生成器类的新实例,这样生成器类就可以变为有状态类。
生成器类的构造函数将传递至页面的 URL、页面的上下文对象 (如果在 URL 中指定) 和页面的容器 (如果在 URL 中指定)。构造函数应调用超类的 init() 方法。
getCrumbs() 方法在数组中返回的 JSON 对象应采用以下格式:
{text: 'display text', url: 'http://my/url'}
例如:
[{"text":"Products","url":"app/#ptc1/comp/netmarkets.product.list"},{"text":"Product1","url":"http://<someServer>/Windchill/app/#ptc1/tcomp/infoPage?oid=OR%3Awt.pdmlink.PDMLinkProduct%3A105250&u8=1"}]
有关示例类,请参阅示例代码