`
q_wong
  • 浏览: 108547 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Richfaces構建節點樹

    博客分类:
  • Seam
阅读更多

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>

 

分享到:
评论
1 楼 --Gyh-- 2012-12-29  
IPartTypeManager是什么东西呢,能不能发下代码?

相关推荐

    JSF Richfaces构建树

    ### JSF Richfaces构建树知识点解析 #### 一、树形结构基础概念 在软件开发领域,树形结构是一种常用的数据结构,具有多种应用场景。树形结构由一系列节点组成,每个节点可以拥有零个或多个子节点。在树形结构中,...

    richfaces3.3.1中树的节点的拖动

    本文将深入探讨"richfaces3.3.1中树的节点的拖动"这一主题,这是RichFaces 3.3.1版本中的一个特性,它允许用户通过拖放操作来重新排列树形结构的节点,提高了用户体验和交互性。 首先,我们了解富客户端框架...

    richfaces tree权限树

    "richfaces tree权限树"是一个基于RichFaces框架构建的用于实现权限管理的树形结构组件。RichFaces是一个功能强大的JavaServer Faces(JSF)扩展库,它提供了许多高级UI组件和Ajax功能,使得开发人员能够更轻松地...

    richfaces 相关资料2

    - 这篇文章可能深入介绍了如何结合Enterprise JavaBeans (EJB)、JavaServer Faces (JSF) 和Seam框架,使用RichFaces的Tree和TreeNode组件来构建动态的节点树结构。 4. **RichFaces自动构建树实现 .docx** - 这个...

    richfaces参考文档

    - ****:创建可扩展的树形视图,支持拖放操作和节点状态管理。 - ****:增强版的树组件,支持拖放操作,常用于构建可配置的树状结构。 ### RichFaces 集成与配置 - **Maven 依赖**:在 Maven 项目中,添加 ...

    使用richfaces 实现tree

    在Java世界中,JSF(JavaServer Faces)是一种用于构建用户界面的服务器端MVC框架,而RichFaces是它的一个扩展库,提供了丰富的组件和功能,尤其在创建交互式、富客户端界面方面表现出色。本教程将聚焦于如何使用...

    用richFaces的<rich:treeNode>标签开发tree

    总的来说,`&lt;rich:treeNode&gt;`标签是RichFaces框架中构建动态树形视图的强大工具,它提供了丰富的功能和高度的灵活性,使得开发者能够轻松地构建复杂的数据层次结构,提高Web应用程序的用户交互性和可操作性。...

    richfaces3.3.1实现表格的行拖动、分页加载等功能

    在`richfaces3.3.1`中,`treeGrid`可以通过设置`nodeType`属性来定义节点类型,通过`onNodeExpand`、`onNodeCollapse`等事件来处理用户操作。 在实际应用中,`richfaces3.3.1`提供的这些组件和功能通常需要与后端...

    JSF树型菜单.rar

    你需要指定模型对象作为树的根节点,并设置相应的属性,如`value`、`var`、`nodeRendered`等,以便正确地渲染树结构。 3. **处理交互**:JSF树组件支持事件监听,当用户点击节点时,可以触发事件并执行相应的动作。...

    rich_face 权限Tree 自定义选择

    “richfaces_tree.txt”可能包含了权限树的数据结构,比如JSON格式的数据,用于描述每个节点的信息,如节点ID、名称、父节点ID、是否可选等。“db.txt”可能是数据库的设计或数据样本,其中可能存储了用户、角色以及...

    jsf 中文Demo 本人付出研究一个月的Demo 请认真学习一下

    RichFaces提供了`&lt;rich:tree&gt;`组件,能够动态地构建和显示树状数据。它支持节点的展开、折叠、选择等多种交互行为,并且可以与后台数据模型进行双向绑定。 **过滤表格**是用于展示大量数据并允许用户筛选内容的常见...

    jsf常用文档datatable行样式,frameset及树型目录dtree,jsf滚动组件

    在JSF中,可以通过第三方库如RichFaces或PrimeFaces提供的组件来实现树形视图。用户可以展开、折叠节点,点击节点触发事件,进行相应的操作。 3. **JSF滚动组件**:JSF提供了滚动条组件,允许在页面中添加滚动效果...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................

Global site tag (gtag.js) - Google Analytics