Java瑣事

          -I am not alone
          posts - 54, comments - 30, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
          框架使用struts2+spring+hibernate,但這里DWR只是跟spring的整合,和其余兩個框架沒有什么關系。
          目的:打開頁面時自動刷新課程,而當選擇另外的課程時,欄目下拉框會發生相應變化。
          頁面代碼addContent.jsp:
          <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

          <%@ taglib prefix="s" uri="/struts-tags" %>
          <html>
              
          <head>
                  
          <meta http-equiv="content-type" content="text/html;charset=utf-8">
              
                  
          <title>FCKeditor</title>
                  
                  
          <script type="text/javascript" src="/wsjx/dwr/engine.js"></script>
                  
          <script type="text/javascript" src="/wsjx/dwr/util.js"></script>
                  
          <script type="text/javascript"
                      src
          ="/wsjx/dwr/interface/contentDaoAjax.js"></script>

                  
          <script type="text/javascript"> <!--
                      
                      function updateCourse()
                      
          {
                          var teacher 
          = "1";
                          
                          contentDaoAjax.getCourses(teacher , createCourses);
                      }

                      function createCourses(courses)
                      
          {
                          var courseObj 
          = document.getElementById('course');
                          DWRUtil.removeAllOptions(courseObj);
                          DWRUtil.addOptions(courseObj,
          {0:"請選擇"});
                          
          if(courses.length == 0)
                          
          {
                              alert(
          "輸入有誤");
                          }

                          
          else
                          
          {
                              DWRUtil.addOptions(courseObj,courses);
                          }

                      }

                      
                      function updateColumn()
                      
          {
                          var course 
          = document.getElementById("course").value;
                          contentDaoAjax.getColumns(course , createColumns);
                      }

                      function createColumns(columns)
                      
          {
                          var columnObj 
          = document.getElementById('column');
                          DWRUtil.removeAllOptions(columnObj);
                          
          if(columns.length == 0)
                          
          {
                              alert(
          "輸入有誤");
                          }

                          
          else
                          
          {
                              DWRUtil.addOptions(columnObj,columns);
                          }

                      }

              
          //--> </script>
              </head>

              
          <body onload="updateCourse()">
                  
          <form>
                      
          <table align="center">
                          
          <tr>
                              
          <td><br/>課程: 
                              
          </td>
                              
          <td><br/><select name="course" id="course" onchange="updateColumn()"></select>
                              
          </td>
                          
          </tr>
                          
                          
          <tr>
                              
          <td style="background-color: red" colspan="2"></td>
                          
          </tr>
                          
          <tr>
                              
          <td>欄目: 
                              
          </td>
                              
          <td><select name="mknr.lm.id" id="column"><option value="0" selected>請選擇</option></select>
                              
          </td>
                          
          </tr>
                          
          <tr>
                              
          <td> <s:textfield name="mknr.title" size="100" label="題目" /> </td>
                          
          </tr>
                                          
          <tr>
                              
          <td>
                                  
          <input type="submit" value="Submit">
                              
          </td>
                          
          </tr>
                      
          </table>

                  
          </form>

              
          </body>
          </html>

          上面部分使用了struts2的標簽,<select name="mknr.lm.id">也是為向后面的action傳遞值做準備,這里關于ajax的配置并沒有用到name。
          web.xml加入以下幾句:
          <!-- DWR servlet 配置 -->
              
          <servlet>
                  
          <servlet-name>dwr</servlet-name>
                  
          <servlet-class>
                      org.directwebremoting.servlet.DwrServlet
                  
          </servlet-class>
                  
          <init-param>
                      
          <param-name>debug</param-name>
                      
          <param-value>true</param-value>
                  
          </init-param>
                  
          <load-on-startup>1</load-on-startup>
              
          </servlet>
              
          <servlet-mapping>
                  
          <servlet-name>dwr</servlet-name>
                  
          <url-pattern>/dwr/*</url-pattern>
              
          </servlet-mapping>
          dwr.xml
          <!DOCTYPE dwr PUBLIC
            "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
            "http://www.getahead.ltd.uk/dwr/dwr10.dtd"
          >
            
            
          <dwr>
                
          <allow>
                    
          <create javascript="contentDaoAjax" creator="spring">
                        
          <param name="beanName" value="contentService"></param>
                    
          </create>
                
          </allow>
            
          </dwr>
          因為我這里沒用到復雜的對象,而只是用到了簡單的Map(int,String),所以并不需要設置convert。如果是傳輸的是javabean,則需要進行轉換。
          applicationContext.xml添加contentService的bean:
          <bean id="contentService"
                  class
          ="cn.edu.ujn.wsjx.managecontent.service.impl.ContentService">
                  
                  
          <property name="mknrDao">
                      
          <ref bean="mknrDao"/>
                  
          </property>
                  
          <property name="jsjkDao">
                      
          <ref bean="jsjkDao"/>
                  
          </property>
                  
          <property name="lmDao">
                      
          <ref bean="lmDao"/>
                  
          </property>
                  
          <property name="yhDao">
                      
          <ref bean="yhDao"/>
                  
          </property>
              
          </bean>
          java類中相應的兩個方法
           1public Map getCourses(String teacher)
           2    {
           3        List<Jsjk> jsjks = jsjkDao.findByTeacherId(1);
           4        Map map = new LinkedHashMap();
           5        for (Jsjk jsjk : jsjks)
           6        {
           7            Kc kc = jsjk.getKcId();
           8            System.out.println(kc.getName());
           9            map.put(kc.getId(), kc.getName());
          10        }

          11        return map;
          12    }

          13    
          14    public Map getColumns(int course)
          15    {
          16        
          17        List<Lm> lms = lmDao.findByCourse(course);
          18        Map map = new LinkedHashMap();
          19        for(Lm lm : lms)
          20        {
          21            System.out.println(lm.getName());
          22            map.put(lm.getId(), lm.getName());
          23        }

          24        return map;
          25    }
          這么一系列配置好以后,就能實現無刷新二級級聯了
          主站蜘蛛池模板: 宜章县| 屏南县| 鄯善县| 潜山县| 射阳县| 弥勒县| 郎溪县| 南岸区| 同心县| 平罗县| 高尔夫| 景谷| 武清区| 阿拉尔市| 娄烦县| 芷江| 洛隆县| 巴南区| 西平县| 安溪县| 准格尔旗| 苗栗县| 桃园县| 琼海市| 信宜市| 霍林郭勒市| 鸡东县| 拉萨市| 绥芬河市| 乌拉特后旗| 镇巴县| 连江县| 天全县| 育儿| 吉林市| 安乡县| 天柱县| 襄汾县| 东港市| 白城市| 珲春市|