China Open source community
站内导航:
 
 
 
当前位置: 首页 >> 程序设计 >> WebLogic树形结构的实现
 
 

WebLogic树形结构的实现

作者:      来源:     发表时间:2006-06-07     浏览次数:      字号:    

中国源码网内相关主题链接
  • Weblogic服务器性能调优
  • WebLogic树形结构的实现
  • WebLogic8.1树形结构的实现

    草木瓜

    2006-6-6

    一、序

    本文是使用WebLogic的<netui:tree>自带控件,如果对其比较陌生可以察看
    E:\bea\weblogic81\samples\workshop\SamplesApp\WebApp\tagSamples\netui\tree
    E:\bea\weblogic81\samples\workshop\SamplesApp\WebApp\tagSamples\netui\tree_dynamic
    WebLogic自带的两个例子。

    关于静态的树形结构相对简单,不在这里详细说明。

    二、自定义的树形结构

    1.环境目录
    ---------------------------------

    Test\TestWeb\index.jsp   Test为应用程序名,TestWeb为Web名

    2.创建页面流
    ---------------------------------

    在TestWeb下新建页面流tree。系统会自动生成以下文件,文件夹:
    Test\TestWeb\tree
    Test\TestWeb\tree\index.jsp
    Test\TestWeb\tree\TreeController.jpf

    3.准备TreeView相关页面文件
    ---------------------------------

    这里使用frame框架进行演示,左边显示树形结点,右边显示对应内容。所以还要建立两个文件。
    tree.jsp作为树形结点页面,content.jsp作为内容页面。
    Test\TestWeb\tree\tree.jsp
    Test\TestWeb\tree\content.jsp

    我们把index.jsp就作为框架容器。代码如下:

    <netui:html>
        <head>
            <title>
                Web Frame
            </title>
        </head>
        <frameset cols="20%,*">
            <frame src="tree.jsp" name="fraTree" >
            <frame src="content.jsp" name="fraContent" >
        </frameset>
    </netui:html>


    4.编辑页面流文件TreeController.jpf
    ---------------------------------

    tree.jsp,content.jsp内容我们暂时不管,先编辑TreeController.jpf页面流文件,全代码如下:

    package tree;
    /**
     * @jpf:controller
     * @jpf:view-properties view-properties::
     * <!-- 此数据是自动生成的。 不推荐手工编辑此区域。 -->
     * <view-properties>
     * <pageflow-object id="pageflow:/tree/TreeController.jpf"/>
     * <pageflow-object id="action:treeState.do">
     *   <property value="180" name="x"/>
     *   <property value="40" name="y"/>
     * </pageflow-object>
     * <pageflow-object id="action:begin.do">
     *   <property value="80" name="x"/>
     *   <property value="100" name="y"/>
     * </pageflow-object>
     * <pageflow-object id="action-call:@page:tree.jsp@#@action:treeState.do@">
     *   <property value="96,120,120,144" name="elbowsX"/>
     *   <property value="31,31,31,31" name="elbowsY"/>
     *   <property value="East_1" name="fromPort"/>
     *   <property value="West_1" name="toPort"/>
     * </pageflow-object>
     * <pageflow-object id="page:tree.jsp">
     *   <property value="60" name="x"/>
     *   <property value="40" name="y"/>
     * </pageflow-object>
     * <pageflow-object id="page:index.jsp">
     *   <property value="240" name="x"/>
     *   <property value="100" name="y"/>
     * </pageflow-object>
     * <pageflow-object id="page:content.jsp">
     *   <property value="120" name="x"/>
     *   <property value="100" name="y"/>
     * </pageflow-object>
     * <pageflow-object id="forward:path#tree#tree.jsp#@action:treeState.do@">
     *   <property value="144,120,120,96" name="elbowsX"/>
     *   <property value="31,31,31,31" name="elbowsY"/>
     *   <property value="West_1" name="fromPort"/>
     *   <property value="East_1" name="toPort"/>
     *   <property value="tree" name="label"/>
     * </pageflow-object>
     * <pageflow-object id="forward:path#success#index.jsp#@action:begin.do@">
     *   <property value="116,160,160,204" name="elbowsX"/>
     *   <property value="91,91,91,91" name="elbowsY"/>
     *   <property value="East_1" name="fromPort"/>
     *   <property value="West_1" name="toPort"/>
     *   <property value="success" name="label"/>
     * </pageflow-object>
     * </view-properties>
     * ::
     */

    //以上一堆注释代码,不必理会

    public class TreeController extends  com.bea.wlw.netui.pageflow.PageFlowController
    {
        //定义树形根结点
        public com.bea.wlw.netui.tags.html.TreeNode liweinode = null;
       
        //页面流加载时运行代码
        public void onCreate() throws Exception
        {
            int i=10;
           
            //实例化树形结点
            //第一个参数:结点图标
            //第二个参数:结点标签
            //第三个参数:一般为null,具体还没搞懂
            //第四个参数:结点的点击动作
            //第五个参数:作用的页面,即在index.jsp定义的内容框架名fraContent
            //第六个参数:展开还是合并
            liweinode=new com.bea.wlw.netui.tags.html.TreeNode(
             "folder_closed.gif",
                    "root",
                    null,
                    "content.jsp",
                    "fraContent",
                    true);  
            com.bea.wlw.netui.tags.html.TreeNode treenode[]=new com.bea.wlw.netui.tags.html.TreeNode[i];
            for(i=0;i<10;i++)
            {
            treenode[i] = new com.bea.wlw.netui.tags.html.TreeNode(
                    "folder_closed.gif",
                    "test"+i,
                    null,
                    "content.jsp?sendvalue="+i,
                    "fraContent",
                    true);
                    liweinode.addChild(treenode[i]);
            }               
        }
       
         /**
         * Handles the state of the tree when a a link is clicked.
         *
         * @jpf:action
         * @jpf:forward name="tree" path="tree.jsp"
         */
       
        //点击结点结的动作处理,要 <netui:tree中的Action一致。
        public com.bea.wlw.netui.pageflow.Forward treeState()
        {
            String nodeSel = null;
            String nodeExpanded = null;
        
            nodeSel = getRequest().getParameter(com.bea.wlw.netui.tags.html.TreeNode.SELECTED_NODE);
            nodeExpanded = getRequest().getParameter(com.bea.wlw.netui.tags.html.TreeNode.EXPAND_NODE);

            if (nodeExpanded != null)
            {

                com.bea.wlw.netui.tags.html.TreeNode node = liweinode.findNode(nodeExpanded);
                if (node != null)
                {
                    node.setExpanded(!node.isExpanded());
                }
                return new com.bea.wlw.netui.pageflow.Forward("tree");
            }

            return new com.bea.wlw.netui.pageflow.Forward(nodeSel);
        }
       
        /**
         * 此方法代表进入页面流的入口
         * @jpf:action
         * @jpf:forward name="success" path="index.jsp"
         */
        protected com.bea.wlw.netui.pageflow.Forward begin()
        {
            return new com.bea.wlw.netui.pageflow.Forward("success");
        }
    }

    5.编辑页面tree.jsp,content.jsp
    ---------------------------------

    tree.jsp内容如下,tree对应上面定义的public liweinode,格式必须如此。action即为上面定义的
    public com.bea.wlw.netui.pageflow.Forward treeState()方法。

      <body>
        <netui:tree tree="{pageFlow.liweinode}" action="treeState"></netui:tree>
      </body>
     
    content.jsp内容如下:

      <body>
          <p>
              <%=request.getParameter("sendvalue")%>
          </p>
      </body>
     
     
    6.运行
    ---------------------------------

    运行会发现左边树形结构是一堆红x,不过点击对应结点,功能倒是没问题。不要紧,下面就解决红x的
    问题。这是由于<netui:tree>中未指定imageRoot。

    将E:\bea\weblogic81\samples\workshop\SamplesApp\WebApp\tagSamples\netui\tree下
    treeImages复制到Test\TestWeb\tree下。并修改tree.jsp。这时

    <netui:tree tree="{pageFlow.liweinode}" action="treeState" imageRoot="treeImages"></netui:tree>

    再运行会发现一切OK,不会很快就会感觉到那些图片实在是太难看了。我这里用的是.net的图片,下载的
    WebControl里面有。把这些好的图片复制到treeImages下,更改代码为:

    <netui:tree  tree="{pageFlow.liweinode}" action="treeState" imageRoot="treeImages" imageHandleRightMiddle="Tplus.gif" imageHandleDownMiddle="Tminus.gif" imageHandleRightLast="Lplus.gif" imageHandleDownLast="Lminus.gif" imageLineVertical="i.gif" imageLineLast="L.gif" imageLineMiddle="T.gif" />

    运行一切OK!

    三、从Xml文件中获取树形结构

    E:\bea\weblogic81\samples\workshop\SamplesApp\WebApp\tagSamples\netui\tree_dynamic这个例子就
    是,有了自定义树形的详细解释,应用也不成问题。

    四、郁闷的话

    WebLogic8.1的帮助真不敢恭维,不全不说,中文版的居然还有乱码,真晕!

    编辑 webmaster

     
     
     
    评论
     
     
    发表
     
    姓名: QQ:
    性别: MSN:
    E-mail: 主页:
    评分: 1 2 3 4 5
    评论内容:
    验证码:
      
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •  
    中国源码网 - WWW.YUANMA.ORG - 中国开放源代码社区