`
fangbiao23
  • 浏览: 41884 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

jsf之三方组件包myfaces之tree2动态应用

阅读更多
首先,来建个树型表数据,网上google一击,差不多类似
/**
--树形菜单
  节点编号
  节点名称
  节点链接址
  些节点父节点
  是否最底节点
  节点排序(一般用在同级节点上)
  节点说明 
*/



drop table EPTreeTable

create table EPTreeTable
(
  TreeNodeId int identity(1,1) constraint pk_TreeNode primary key,
  TreeNodeName varchar(50) not null,
  TreeNodeLink varchar(100) ,
  TreeNodeFatherId int default 0, --0 为最高层
  TreeNodeIsBottom bit default 1, --1 为底层 0为非底层
  TreeNodeCompositor int default 1, -- 默认排在最后面
  TreeNodeExplain varchar(200)
)

二、建立一个TO对象

package ep.pojo;
import java.io.Serializable;
/**
* @author fangbiao
* 树TO对象
*/
public class TreePojo implements Serializable{
/**
* 节点编号
*/
private int treeNodeId;
/**
* 节点名称
*/
private String treeNodeName;
/**
* 节点操作目的地
*/
private String treeNodeLink;
/**
* 父节点
*/
private int treeParentNodeId;
/**
* 是否底层节点
*/
private boolean treeNodeIsBottom;
/**
* 结点排序(同级)
*/
private int treeNodeCompositor;
/**
* 节点备注
*/
private String treeNodeExplain;
/**
* 节点权限
*/
private String treeNodeControl;
/**
* @return treeNodeControl
*/
public String getTreeNodeControl() {
return treeNodeControl;
}
/**
* @param treeNodeControl 要设置的 treeNodeControl
*/
public void setTreeNodeControl(String treeNodeControl) {
this.treeNodeControl = treeNodeControl;
}
/**
* @return treeNodeCompositor
*/
public int getTreeNodeCompositor() {
return treeNodeCompositor;
}
/**
* @param treeNodeCompositor 要设置的 treeNodeCompositor
*/
public void setTreeNodeCompositor(int treeNodeCompositor) {
this.treeNodeCompositor = treeNodeCompositor;
}
/**
* @return treeNodeExplain
*/
public String getTreeNodeExplain() {
return treeNodeExplain;
}
/**
* @param treeNodeExplain 要设置的 treeNodeExplain
*/
public void setTreeNodeExplain(String treeNodeExplain) {
this.treeNodeExplain = treeNodeExplain;
}
/**
* @return treeNodeId
*/
public int getTreeNodeId() {
return treeNodeId;
}
/**
* @param treeNodeId 要设置的 treeNodeId
*/
public void setTreeNodeId(int treeNodeId) {
this.treeNodeId = treeNodeId;
}
/**
* @return treeNodeIsBottom
*/
public boolean isTreeNodeIsBottom() {
return treeNodeIsBottom;
}
/**
* @param treeNodeIsBottom 要设置的 treeNodeIsBottom
*/
public void setTreeNodeIsBottom(boolean treeNodeIsBottom) {
this.treeNodeIsBottom = treeNodeIsBottom;
}
/**
* @return treeNodeLink
*/
public String getTreeNodeLink() {
return treeNodeLink;
}
/**
* @param treeNodeLink 要设置的 treeNodeLink
*/
public void setTreeNodeLink(String treeNodeLink) {
this.treeNodeLink = treeNodeLink;
}
/**
* @return treeNodeName
*/
public String getTreeNodeName() {
return treeNodeName;
}
/**
* @param treeNodeName 要设置的 treeNodeName
*/
public void setTreeNodeName(String treeNodeName) {
this.treeNodeName = treeNodeName;
}
/**
* @return treeParentNodeId
*/
public int getTreeParentNodeId() {
return treeParentNodeId;
}
/**
* @param treeParentNodeId 要设置的 treeParentNodeId
*/
public void setTreeParentNodeId(int treeParentNodeId) {
this.treeParentNodeId = treeParentNodeId;
}
}
三、建立一棵递归的树,网上资料也大部分是类似的,有的是js排序的,有的是数据库排序,我用的也是一种通用方法(此方法也是从网上参考而来,感谢那位兄弟)
我将提供两种方式,一是只读一次数据库,程序排序
//这就是only读一次数据
           private List testList = null;
private int flag = 0;
public List getTestList(){
if(testList == null){
if(flag == 0){
flag = 1;
testList =  itbs.getManagerTree();
return testList;
}
return testList;
}
return testList;
}
//对树列表数据(进行子树生成)
public List getChildrenList(TreePojo tp){
List list = getTestList();
int listLength = list.size();
List newReturnList = new ArrayList();
if(listLength == 0)
return newReturnList;

List leaveList = new ArrayList();
for(int i=0;i<listLength;i++){

TreePojo treePojo =  (TreePojo)list.get(i);
int treePojoTreeParantNodeId = treePojo.getTreeParentNodeId();
int tpTreeNodeId = tp.getTreeNodeId();
if(treePojoTreeParantNodeId == tpTreeNodeId){
newReturnList.add(treePojo);
}else{
leaveList.add(treePojo);
}
}
list = leaveList;
return newReturnList;
}
//成生一棵树
private synchronized TreeNode doTurnToTree(TreePojo  tp){
List list = getChildrenList(tp);
int treeLength = list.size();
TreeNodeBase personNode = null;

if(tp.getTreeParentNodeId() == 0){
//开始树
personNode = new TreeNodeBase("person",tp.getTreeNodeName(),false);

}else{
if(treeLength >0){
// 有子树
personNode = new TreeNodeBase("folder",tp.getTreeNodeName(),false);
}else{
// 叶子
personNode = new TreeNodeBase("document",tp.getTreeNodeName(),tp.getTreeNodeLink(),true);
}

}
Iterator iterator = list.iterator();
while(iterator.hasNext()){
TreePojo treePojo = (TreePojo)iterator.next();
personNode.getChildren().add(this.doTurnToTree(treePojo));
}
return personNode;
}

第一种方式OK!!

第二种方式就是把
List list = getChildrenList(tp);
改为
List list = itbs.getTree(tp);
这句是需要读取数据库的

刚好有事,明天续........

分享到:
评论
2 楼 love2008 2008-11-08  
1 楼 fangbiao23 2008-02-01  
第二种方式就是把
List list = getChildrenList(tp); //此句从内存testList读取出所需
改为
List list = itbs.getTree(tp); //这句是需要读取数据库的,即把每一个结点当成一棵二级树,这在树菜单列表多级条件下极其有用,这个必须给每个树结点增加一个事件, 该结点事件每次处理一次 doTurnToTree(TreePojo);
至于数据库语句怎么写:
只要通过资源表(当权限控制时,可以采用 用户_角色_资源_权限联合起来)读取出整棵树的数据出来就可以在程序中判断出来,具体的TO对象已经给出了,只要你看一下,就可以轻易的写出了.

相关推荐

    jsf/jstl/MyFaces包

    总的来说,"jsf/jstl/MyFaces包"是一个包含了JSF和JSTL关键组件的集合,它支持开发人员创建基于Java的动态Web应用。通过理解和熟练使用这些工具,开发者能够构建出高效、模块化的Web界面,同时利用JSTL的强大功能来...

    myfaces jsf tobago全部jar包

    MyFaces JSF Tobago 全部 JAR 包是一组重要的软件组件,它们构成了一个功能丰富的用户界面(UI)框架,适用于JavaServer Faces (JSF)应用程序开发。这个压缩包包含了一系列的JAR文件,这些文件是MyFaces Tobago项目...

    JSF.rar_JSF_myfaces-all.j

    JavaScript Server Faces(JSF)是Java平台上用于构建Web应用程序的框架,它简化了用户界面的开发,特别是对于那些需要大量动态交互的Web应用。在这个"JSF.rar"压缩包中,我们关注的是"JSF_myfaces-all.j",这可能是...

    JSF包,jsf包,JSF包,jsf包

    **JSF(JavaServer Faces)** 是一种Java平台上的Web应用程序开发框架,它提供了一种组件化和事件驱动的方式来创建用户界面。JSF的核心概念包括组件、事件、渲染器和生命周期,这些元素共同构建了一个强大的MVC...

    jsf配置myfaces各种jar

    本人用的是Myeclipse7.0+J2EE5.0+JSF开发,配置myfaces各种jar,包括上传.考到lib下就可以.哪里不明加我QQ问我 200808006

    JSF及Myfaces帮助

    JSF及Myfaces帮助.CHM

    第2部分-动态JSF表单

    在本资源包“第2部分-动态JSF表单(CSS、JavaScript和JSF联合打造 Ajax应用程序)”中,我们深入探讨了如何利用这三种技术来创建动态、交互式的Web应用程序。这一部分着重于Ajax(异步JavaScript和XML)的应用,通过...

    深入讨论JSF中Tree2组件使用方法

    深入讨论JSF中Tree2组件使用方法。

    jsf2.0源碼(myfaces2.0.4 api+impl)

    JavaServer Faces (JSF) 是一个用于构建企业级Web应用的Java框架,它提供了一种组件化的方式来创建用户界面。JSF 2.0是其一个重要版本,引入了许多新特性以提升开发效率和用户体验。在给定的压缩包中,包含的是...

    JSF MyFaces 开发文档

    - **组件**:JSF中的核心概念之一是组件。组件是构成页面的基本单位,可以是按钮、文本框或其他UI元素。组件可以被嵌套在其他组件中,形成复杂的布局结构。 - **事件处理**:JSF组件支持事件处理机制,允许开发者...

    JSF分页组件2

    JSF分页组件2是构建高效、用户友好的Web应用的关键工具。通过理解其工作原理,结合现有的库或自定义组件,我们可以为用户提供更好的数据浏览体验。在实际项目中,结合性能优化策略,确保分页组件不仅功能完善,而且...

    JSF and MyFaces 类库

    2. **创建JSF项目**:在Eclipse中新建一个Dynamic Web Project,然后在项目设置中选择JSF支持并指定MyFaces为实现库。这将自动为项目添加所需的库文件和配置。 3. **创建Facelets视图**:JSF使用Facelets作为默认的...

    MyFaces组件最新源代码

    2. **组件开发**:Apache MyFaces的组件开发过程涉及到创建自定义JSF UI组件。这通常包括定义一个UIComponent子类,实现所需的行为,以及创建相应的Facelet标签以便在视图层使用。 3. **Tomahawk组件**:压缩包中的...

    jsf 1.2 myfaces1.2.7 richfaces3.3.1 facelets1.2 所有的最新包

    RichFaces 3.3.1版本包含了诸如数据网格、对话框、滑块、日历等高级组件,大大增强了JSF应用的用户体验。它还提供了事件驱动的Ajax支持,允许部分页面刷新,而无需刷新整个页面。 **Facelets 1.2** 是JSF的视图层...

    JSF标签应用实例

    JSF(JavaServer Faces)是Java平台上用于构建用户界面的组件模型框架,它提供了一种声明式的方式来创建和管理Web应用程序的用户界面。这个压缩包文件"myfaces-example-simple-1.1.7-SNAPSHOT"包含了一个JSF的实际...

    jsf需要全部包

    JavaScript Server Faces(JSF)是Java平台上...这个“jsf需要全部包”可能包含了上述所有提到的组件、库、工具和配置文件,用于搭建和开发完整的JSF应用。开发者可以免费下载这些资源,加速JSF项目的启动和开发进程。

    开发JSF所需要的jar包

    JavaServer Faces(JSF)是Java平台上的一种用于构建Web应用程序的MVC(Model-View-Controller)框架。它提供了一种组件化的方式来构建...正确配置后,你就可以利用JSF的强大功能来高效地构建动态、组件化的Web应用了。

    JSF2自定义组件编程系列 第五部分 源代码

    这个"JSF2自定义组件编程系列第五部分 源代码"着重讲解了如何将复合组件(Composite Component)打包到JAR文件中,并通过Maven3、JSF2、Ubuntu操作系统、GlassFish v3.0.1应用服务器以及Emacs JDEE集成开发环境进行...

    使用JSF和MyFaces实现文件上载

    总之,使用JSF和MyFaces实现文件上传虽然需要一些额外的配置和处理,但通过遵循上述步骤和最佳实践,可以有效地在JavaWeb应用程序中实现这一功能。这不仅提高了用户体验,也增强了应用程序的功能性和实用性。

    用JSF和MyFaces上传文件

    理解如何在JSF和MyFaces环境中处理文件上传是开发高级Web应用程序的关键技能之一。通过熟悉Apache Commons File Upload库和MyFaces的API,开发者可以创建出高效、可靠的文件上传解决方案,同时考虑到性能和安全性。

Global site tag (gtag.js) - Google Analytics