EJB+JSF+SEAM 使用Richfaces中的Tree和TreeNode組件
Entity部分關鍵代碼:
public class PartType {
//屬性...
private PartType parent;
private Set<PartType> children = new HashSet<PartType>();
//屬性對應的getter、setter......
@ManyToOne
public PartType getParent() {
return parent;
}
public void setParent(PartType parent) {
this.parent = parent;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "parent")
public Set<PartType> getChildren() {
return children;
}
public void setChildren(Set<PartType> children) {
this.children = children;
}
public void addChildren(PartType pt) {
this.children.add(pt);
}
}
SessionBean代碼......
Action部分關鍵代碼:
@Name("ptAction")
@Scope(ScopeType.CONVERSATION)
public class PartTypeAction {
@Logger
private Log log;
@In
private IPartTypeManager ptManager;
@Out(required = false)
private PartType selectpt;
public PartType getSelectpt() {
return selectpt;
}
public void setSelectpt(PartType selectpt) {
this.selectpt = selectpt;
}
/*
* 遞歸節點樹
*/
private TreeNode<PartType> addChild(TreeNode<PartType> curNode,
PartType curPT) {
curNode.setData(curPT);
log.info("遍歷: " + curPT.getName());
if (curPT.getChildren().size() > 0) {
for (Iterator iterator = curPT.getChildren().iterator(); iterator
.hasNext();) {
PartType childptItem = (PartType) iterator.next();
TreeNode<PartType> childpt = new TreeNodeImpl<PartType>();
curNode.addChild(childptItem.getId(), childpt);// 子節點加到當前節點下
addChild(childpt, childptItem);
}
}
return curNode;
}
/*
* 構建樹
*/
@Begin(join = true)
public TreeNode<PartType> getPTTree() {
log.info("構建PartType Tree");
PartType ptroot = ptManager.getRootPartType();//調用SessionBean中的方法以獲取父節點
TreeNode<PartType> root = new TreeNodeImpl<PartType>();
this.addChild(root, ptroot);
TreeNode<PartType> vroot = new TreeNodeImpl<PartType>();
vroot.addChild(root.getData().getId(), root);
return vroot;
}
/*
* 選擇一個節點觸發事件
*/
@Begin(join = true)
public void processSelection(NodeSelectedEvent event) {
UITree tree = getTree(event);
if (tree != null) {
selectpt = (PartType) tree.getTreeNode().getData();
log.info("選中節點:" + selectpt.getName());
this.setSelectpt(selectpt);
}
}
private UITree getTree(FacesEvent event) {
UIComponent component = event.getComponent();
if (component instanceof UITree) {
return ((UITree) component);
}
if (component instanceof UITreeNode) {
return ((UITree) component.getParent());
}
return null;
}
}
頁面代碼:
<rich:tree swidth="100%" value="#{ptAction.PTTree}" var="item"
switchType="ajax" reRender="userdata"
nodeSelectListener="#{ptAction.processSelection}"
ajaxSubmitSelection="true">
<rich:treeNode>
<h:outputText value="#{item.name}" />
</rich:treeNode>
</rich:tree>
分享到:
相关推荐
### JSF Richfaces构建树知识点解析 #### 一、树形结构基础概念 在软件开发领域,树形结构是一种常用的数据结构,具有多种应用场景。树形结构由一系列节点组成,每个节点可以拥有零个或多个子节点。在树形结构中,...
本文将深入探讨"richfaces3.3.1中树的节点的拖动"这一主题,这是RichFaces 3.3.1版本中的一个特性,它允许用户通过拖放操作来重新排列树形结构的节点,提高了用户体验和交互性。 首先,我们了解富客户端框架...
"richfaces tree权限树"是一个基于RichFaces框架构建的用于实现权限管理的树形结构组件。RichFaces是一个功能强大的JavaServer Faces(JSF)扩展库,它提供了许多高级UI组件和Ajax功能,使得开发人员能够更轻松地...
- 这篇文章可能深入介绍了如何结合Enterprise JavaBeans (EJB)、JavaServer Faces (JSF) 和Seam框架,使用RichFaces的Tree和TreeNode组件来构建动态的节点树结构。 4. **RichFaces自动构建树实现 .docx** - 这个...
- ****:创建可扩展的树形视图,支持拖放操作和节点状态管理。 - ****:增强版的树组件,支持拖放操作,常用于构建可配置的树状结构。 ### RichFaces 集成与配置 - **Maven 依赖**:在 Maven 项目中,添加 ...
在Java世界中,JSF(JavaServer Faces)是一种用于构建用户界面的服务器端MVC框架,而RichFaces是它的一个扩展库,提供了丰富的组件和功能,尤其在创建交互式、富客户端界面方面表现出色。本教程将聚焦于如何使用...
总的来说,`<rich:treeNode>`标签是RichFaces框架中构建动态树形视图的强大工具,它提供了丰富的功能和高度的灵活性,使得开发者能够轻松地构建复杂的数据层次结构,提高Web应用程序的用户交互性和可操作性。...
在`richfaces3.3.1`中,`treeGrid`可以通过设置`nodeType`属性来定义节点类型,通过`onNodeExpand`、`onNodeCollapse`等事件来处理用户操作。 在实际应用中,`richfaces3.3.1`提供的这些组件和功能通常需要与后端...
你需要指定模型对象作为树的根节点,并设置相应的属性,如`value`、`var`、`nodeRendered`等,以便正确地渲染树结构。 3. **处理交互**:JSF树组件支持事件监听,当用户点击节点时,可以触发事件并执行相应的动作。...
“richfaces_tree.txt”可能包含了权限树的数据结构,比如JSON格式的数据,用于描述每个节点的信息,如节点ID、名称、父节点ID、是否可选等。“db.txt”可能是数据库的设计或数据样本,其中可能存储了用户、角色以及...
RichFaces提供了`<rich:tree>`组件,能够动态地构建和显示树状数据。它支持节点的展开、折叠、选择等多种交互行为,并且可以与后台数据模型进行双向绑定。 **过滤表格**是用于展示大量数据并允许用户筛选内容的常见...
在JSF中,可以通过第三方库如RichFaces或PrimeFaces提供的组件来实现树形视图。用户可以展开、折叠节点,点击节点触发事件,进行相应的操作。 3. **JSF滚动组件**:JSF提供了滚动条组件,允许在页面中添加滚动效果...
Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................