談笑有鴻儒,往來無白丁

          在恰當的時間、地點以恰當的方式表達給恰當的人...  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持blogjava做大做強!向dudu站長致敬>> > 我的微博敬請收聽

          1、需要字典的時候;

                 <tr>
                   
          <td>請選擇公文狀態:</td>
                   
          <td>
                      
          <tiles:insert definition="mainLayout" flush="true">   
                          
          <tiles:put name="dictionary" value="docstate"/>
                          
          <tiles:put name="value" value="114d389ec53[ab1ff2]-7ff4"/>                                
                          
          <tiles:put name="id" value="115ff81cf78[f5c8fb]-8000"/>                                
             
          </tiles:insert>
                   
          </td>
                 
          </tr>   

          其中value表示是一個默認值
          如果是在編輯的時候顯示的值通過ID來指定。

          2、設計步驟
             首先配置struts-config.xml
             

            <plug-in className="org.apache.struts.tiles.TilesPlugin" >
              
          <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
              
          <!-- Set Module-awareness to true -->
              
          <set-property property="moduleAware" value="true" />
            
          </plug-in>  

           第二:/WEB-INF/tiles-defs.xml
           

              <definition name="mainLayout" path="/part/defaultTemplate.jsp"> 
              
          </definition> 

          第三:定義模板

           

          <%
          DictionaryFactory.setDictionaryByName(dictionary, request);
          %>
          <logic:present name="${dictionary}">
              
          <select name="${dictionary}" size="1">
                  
          <logic:iterate id="dobj" name="${dictionary}"
                      type
          ="com.chinantn.library.dictionary.DicBean">
                      
          <option value="<bean:write name='dobj' property='id'/>"
                          <logic:equal name
          ='dobj' property='id' value='${id}' >selected</logic:equal>
                          
          <logic:equal name='dobj' property='id'  value='${value}'>selected</logic:equal>>
                          
          <bean:write name="dobj" property="name" />
                  
          </logic:iterate>
              
          </select>
          </logic:present>

          第四:讀取字典的配置文件

              <province>
                  
          <id>id</id>
                  
          <name>province</name> 
                  
          <sql>select id,name from tb_dic_main</sql>
              
          </province>

          第五:解析xml文件根據傳入的想要使用的字典類型得到數據;

              //得到select option id    
              private static String sid =null;
              
          //得到select option name    
              private static String sname =null;
              
          //生成數據的ssql    
              private static String ssql =null;
              
              
          private static String dicName;

              
          /**
               * 
          @return dicName
               
          */

              
          public static String getDicName() {
                  
          return dicName;
              }


              
          /**
               * 
          @param dicName 要設置的 dicName
               
          */

              
          public static void setDicName(String dicName) {
                  DictionaryFactory.dicName 
          = dicName;
              }


              
          /**
               * 默認的構造函數
               *
               
          */

              
          public DictionaryFactory() {
                   
          super();
              }


              
          /**
               * 根據配置文件進行初始化
               * 
               * 
          @param configFilename
               
          */

              
          public DictionaryFactory(String sConfigFileName) {
                  
          this.sConfigFileName = sConfigFileName;
              }

              
              
          /**
               * 根據字典的類型得到需要設置的字典
               * 
          @param sDicType
               
          */

              
          public static void setDictionaryByName(String dicName,HttpServletRequest request) throws Exception, SQLException{
                  
          //取得需要的參數
                  init(dicName);        
                  Connection conn 
          = DBConnection.getConnection();
                  Statement stmt 
          = conn.createStatement();
                  log.info(
          "ssql:"+ssql);
                  ResultSet rset 
          = stmt.executeQuery(ssql);
                  List list 
          = new ArrayList();
                  
          while (rset.next()) {
                      log.info(rset.getString(
          1+ " " + rset.getString(2));
                      DicBean db 
          = new DicBean();
                      db.setId(rset.getString(
          1));
                         db.setName(rset.getString(
          2));
                      list.add(db);               
                      }

                  log.info(sname
          +"----"+list.size());
                  request.setAttribute(sname, list);
                  
          if (conn != null{
                      
          try {
                          conn.close();
                      }
           catch (Exception e) {
                          e.printStackTrace();
                      }

                  }

              }


              
          /**
               * 初始化數據字典的配置信息
               
          */
           
              
          private static void init(String dicName) {
                  
                  ClassPathResource classpath 
          = new ClassPathResource(sConfigFileName);
                  
          //讀取xml配置文件的信息,初始化數組
                  try {
                      
          //獲得一個xml的解析器
                      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                      
          //解析XML文件生成DOM文檔的接口類,以便訪問DOM
                      DocumentBuilder builder = factory.newDocumentBuilder();
                      
          //Document接口描述了對于整個XML文件的文檔樹
                      Document document = builder.parse(classpath.getFile());
                      
          //獲得根元素的子節點列表
                      Element element = document.getDocumentElement();
                      
          //得到需要的字典
                      NodeList nodelist =element.getElementsByTagName(dicName);
                      
          for(int i=0 ;i<nodelist.getLength();i++{
                          Element rootelement 
          = (Element)nodelist.item(i);
                          
          //獲得ID屬性 
                          NodeList idList = rootelement.getElementsByTagName("id");
                          
          //獲得ID元素
                          Element idElement = (Element)idList.item(0);
                          
          //獲得id元素的第一個值 
                          String id = idElement.getFirstChild().getNodeValue();
                          
          //獲得name元素名稱 
                          NodeList nameList = rootelement.getElementsByTagName("name"); 
                          
          //獲得name元素 
                          Element nameElement = (Element)nameList.item(0); 
                          
          //獲得name元素的第一個值 
                          String name = nameElement.getFirstChild().getNodeValue();
                          
          //獲得sql元素名稱 
                          NodeList sqlList = rootelement.getElementsByTagName("sql"); 
                          
          //獲得sql元素 
                          Element sqlElement = (Element)sqlList.item(0); 
                          
          //獲得sql元素的第一個值 
                          String sql = sqlElement.getFirstChild().getNodeValue();
                          sid 
          = id;
                          sname 
          = name;
                          
          //
                          ssql = sql +" where dictype='"+name+"'" ;
                          log.info(
          "id="+id+";name="+name+";sql="+sql);
                          
                      }

                  }
          catch(Exception e) {
                      e.printStackTrace();
                  }

              }

           

          第六:設計jsp
          返回第一步:就是這樣用。
          大概就是這么個流程了。并且可以實現把數據字典統一一個模塊維護!

           

           

           

          posted on 2007-11-03 10:33 壞男孩 閱讀(6880) 評論(5)  編輯  收藏 所屬分類: 生活隨筆

          FeedBack:
          # re: 如何設計一個公共的數據字典維護模塊
          2007-11-03 10:49 | 壞男孩
          # re: 如何設計一個公共的數據字典維護模塊
          2007-11-03 11:25 | 5D壁紙
          貌似不錯,頂一個,但是不知道博主要說什么,呵呵

          5D壁紙,http://5d6p.5d6d.com 歡迎來到國內最好的壁紙論壇  回復  更多評論
            
          # re: 如何設計表中的簡單函數
          2008-04-15 09:04 | 周愛榮
          我嘗試建立了一個合同數據庫,它包括了銷售合同,采購合同,以及收、發貨和收、付款。都是圍繞配件(即產品)來連接的。但是我還要建立一個庫存的表格,怎樣可以只能得使用到庫存而不用手動輸入。


          另外,我可以在窗體中使用函數(簡單的加減乘除),但是為什么表不可以一起應用呢?  回復  更多評論
            
          # re: 如何設計一個公共的數據字典維護模塊
          2009-02-17 11:05 | 過路人
          我想用Java寫個字典維護的程序,看完你上邊的那些說實話有點暈。能不能給我更多的指導。可以的話聯系我: hehaiquan@hotmail.com  回復  更多評論
            
          # re: 如何設計一個公共的數據字典維護模塊
          2012-05-14 15:46 | 冬顏008
          vmcxk kfgml;o   回復  更多評論
            
          主站蜘蛛池模板: 林周县| 广丰县| 达州市| 阜康市| 镇安县| 盖州市| 清镇市| 会理县| 四平市| 郁南县| 桑植县| 孝昌县| 儋州市| 醴陵市| 化州市| 安庆市| 南阳市| 内黄县| 团风县| 临邑县| 沾化县| 寿阳县| 富平县| 商洛市| 昌邑市| 安徽省| 贡觉县| 田东县| 辽阳市| 长寿区| 永丰县| 永登县| 喀喇沁旗| 吉林省| 龙岩市| 青铜峡市| 勃利县| 张家界市| 万源市| 镇坪县| 普定县|