/** *//**
* 拦截节点被展开的事件,并加载额外的数据
* @param event
* @throws AbortProcessingException
*/
public void processAction(ActionEvent event) throws AbortProcessingException {
System.out.println("Entering processAction()");
UIComponent component = (UIComponent) event.getSource();
while (!(component != null && component instanceof HtmlTree)) {
component = component.getParent();
}
if (component != null) {
HtmlTree tree = (HtmlTree) component;
TreeNodeBase node = (TreeNodeBase) tree.getNode();
if (!tree.isNodeExpanded() && node.getChildren().size() == 0) {
Map<String, String> map = splitKeyValues(node.getIdentifier()); // 一些辅助代码,用于将 "car_id=7" 或 "car_id=7&person_id=12" 拆分开
this.car_id = map.get("car_id");
if (this.car_id != null) {
appendPersonsNodes(node); // 参见下面的例子
}
this.person_id = map.get("person_id");
if (this.person_id != null) {
appendLicensesNodes(node); // 没有显示
}
}
}
}
/** *//** 把当前car_id下的Person子结点加入导航中 */
private void appendPersonsNodes(TreeNodeBase carDetailNode) {
VariableResolver resolver = FacesContext.getCurrentInstance().getApplication().getVariableResolver();
PersonsTable personsTable = (PersonsTable) resolver.resolveVariable(FacesContext.getCurrentInstance(),
"personsTable");
List<Person> personsList = personsTable.getCarPersons();
for (Person o : personsList) {
List<TreeNodeBase> list = carDetailNode.getChildren();
list.add(new TreeNodeBase("person-folder", o.getDescription(),"person_id=" + o.getPersonId(), true));
}
System.out.println("NavigationBacker fetched " + personsList.size() + " Persons for carId=" + this.car_id);
} |
相关推荐
深入讨论JSF中Tree2组件使用方法。
- **定义**: 在这一阶段,JSF框架从客户端接收到HTTP请求后,会解析请求中的视图标识符(View ID),并使用这个标识符找到相应的视图树(View Tree)。 - **视图实例化**: - **新视图**(New View): 如果视图不...
在JSF2中引入了许多新特性和改进,极大地提升了开发效率和用户体验。以下将详细介绍JSF2的新特性及其配置。** 1. **Faces Servlet自动注册**:在JSF2中,Faces Servlet不再需要在web.xml中手动配置。它现在会自动...
2. **JSF组件库**: - JSF标准组件库(JavaServer Faces Core Components):提供基本的HTML元素和交互控件,如按钮、输入框、表单等。 - Apache MyFaces或Mojarra:JSF的两个主要实现,它们扩展了标准组件库,...
在JSF中,虽然主要关注组件的交互,但可以通过嵌入HTML元素来使用frameset。然而,现代Web开发中,frameset已逐渐被iframe所取代,因为iframe提供了更好的灵活性和更好的SEO支持。 - **DTREE(Dynamic Tree)**:...
本文将深入探讨JSF中的一些常见控件及其使用方法,旨在帮助开发者更好地理解和应用这些控件。 1. **输入控件**: - `h:inputText`:用于创建简单的文本输入字段,可以与Bean中的属性绑定,处理用户输入的数据。 -...
在 Faces API 中,FacesContext 和 ExternalContext 是两个经常使用的类,本文将详细介绍 FacesContext 的编程接口和使用方法。 FacesContext 的实例是在 FacesServlet 对象中创建的,每个 JSF 请求都会获取一个 ...
JSF提供了一组可重用的UI组件,可以像HTML元素一样在页面上使用。这些组件通过后台的数据模型与业务逻辑进行交互,从而实现数据的处理和展示。 二、JSF组件库 JSF的组件库包括各种UI元素,如按钮、文本框、下拉列表...
2. **组件树(Component Tree)** - JSF页面由组件树构成,其中每个组件都可能有子组件。树的根通常是`UIViewRoot`,其他组件依此挂载。 3. **渲染(Rendering)** - 渲染器(Renderers)负责将组件转化为HTML或...
2.2 组件模型:JSF的核心是组件库,它提供了一系列预定义的UI组件,如按钮、输入框等,可以直接在视图中使用。 2.3 视图技术:Facelets是JSF 2.x及以后版本的默认视图技术,它是一种XML-based模板语言,用于创建可...
3. RichFaces 3.1.*:这个版本的RichFaces提供了许多高级组件,包括我们要用到的Tree组件。 创建树形结构通常是为了展示层次化的数据,例如目录结构、组织架构或数据库的分类。在RichFaces中,`<rich:tree>`是实现...
这个"jsf 中文Demo"是作者经过一个月研究精心制作的示例项目,旨在帮助学习者深入理解JSF的使用方法。 **导航**在JSF中指的是页面之间的跳转控制。JSF使用`<h:link>`和`<h:button>`等组件来创建链接,以及`...
1. **组件树(Component Tree)**:JSF应用的核心是组件树,它由UI组件组成,这些组件可以相互嵌套,形成一个表示用户界面的结构。 2. **生命周期(Life Cycle)**:JSF组件有一个从初始化到销毁的生命周期,包括六...
2. **Component Tree**:JSF使用组件树来构建用户界面。每个组件都有属性、事件和行为,可以嵌套形成复杂的UI结构。 3. **View Handling**:视图处理涉及创建、更新和管理视图状态。JSF会将用户界面的状态保存在...
- **容器独立性**:JSF组件和页面在不同的Java EE容器中具有高度的可移植性,这意味着应用可以在不同的服务器上运行而无需修改代码。 - **JSF生命周期**:JSF页面请求遵循特定的生命周期,包括Restore Component ...
#### 改进tree组件创建方法和内容组织 针对JSF与JSP混合使用时可能出现的问题,JSF 1.2提供了更精细的组件树创建和渲染机制。通过将组件树的构建与渲染分离,避免了JSP引擎过早渲染静态文本,从而解决了诸如文本...
2. **CDI/Managed Beans**:JSF支持Contexts and Dependency Injection(CDI),使得依赖注入更加灵活,同时还能使用Managed Beans进行轻量级的组件管理。 3. **Faces Servlet**:JSF通过Faces Servlet处理HTTP请求...
它允许开发者使用XML或者XHTML语法来定义页面结构,同时支持EL(表达式语言)和JSF组件,使得页面的可维护性和可重用性大大提高。 **3. UIComponent和Component Tree** JSF中的UIComponent是表示Web页面元素的基类。...
3. **Component Tree**:JSF维护一个组件树,每个UI组件都在树中有一个位置,这使得组件之间的通信和状态管理变得简单。 4. **Lifecycle**:JSF有六种生命周期阶段,包括初始化、应用请求值、处理验证、更新模型值、...