posts - 14, comments - 22, trackbacks - 0, articles - 4
            BlogJava :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理

          接著上次的話題,下面的就是學(xué)生注冊時需要的學(xué)院,專業(yè),班級,三層列表,
          學(xué)院:
          <html:select property="instituteId" onchange="getDepartments(this.value)">
          ?????<html:options collection="institutes" property="value" labelProperty="label"/>
          ????</html:select>

          專業(yè):
          <html:select property="departmentId" styleId="department" onchange="getClasses(this.value)"></html:select>
          班級:
          <html:select property="classId" styleId="classid" ></html:select>

          學(xué)院是上來就應(yīng)該有的,我們把他放到了LabelValueBean里
          public Vector<LabelValueBean> getInstitutes()
          ??? {
          ??????? Connection connection = null;
          ??????? PreparedStatement pstmt = null;
          ??????? ResultSet rs = null;
          ??????? try
          ??????? {
          ??????????? connection = getConnection();
          ??????????? pstmt = connection.prepareStatement( "select * from institute" );
          ??????????? rs = pstmt.executeQuery();
          ??????????? Vector<LabelValueBean> institutes = new Vector<LabelValueBean>();
          ??????????? institutes.add( new LabelValueBean( "請選擇所在學(xué)院", "" ) );
          ??????????? while ( rs.next() )
          ??????????? {
          ??????????????? institutes.add( new LabelValueBean(
          ??????????????????????? rs.getString( "institute" ), rs.getString( "id" ) ) );
          ??????????? }
          ??????????? return institutes;
          ??????? }
          ??????? catch ( Exception e )
          ??????? {
          ??????????? e.printStackTrace();
          ??????? }
          ??????? finally
          ??????? {
          ??????????? close( rs );
          ??????????? close( pstmt );
          ??????????? close( connection );
          ??????? }
          ??????? return null;
          ??? }
          而當(dāng)它選擇了一個學(xué)院后,相應(yīng)的getDepartments(this.value)的js腳本就該工作了,還是四步
          var xmlHttp;
          function createXMLHttpRequest()
          {
          ?if (window.XMLHttpRequest)
          ?{
          ??xmlHttp = new XMLHttpRequest();
          ?}
          ?else if (window.ActiveXObject)
          ?{
          ??xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
          ??? }
          }
          發(fā)出請求
          function getDepartments(institute)
          {
          ?createXMLHttpRequest()
          ?var url = "ajax.do?institute="+institute+"&method=getDepartments"
          ?xmlHttp.open("GET",url, true)
          ?xmlHttp.onreadystatechange = departments
          ?xmlHttp.send(null)
          }
          處理響應(yīng)
          function departments()
          {
          ?if (xmlHttp.readyState == 4)
          ?{
          ??if (xmlHttp.status == 200)
          ??{
          ???resText = xmlHttp.responseText
          ???each = resText.split("|")
          ???buildSelect( each, document.getElementById("departmentId"), "請選擇所在專業(yè)");
          ??}
          ?}
          }
          function buildSelect(str,sel,label)
          {
          ?sel.options.length=0;
          ?sel.options[sel.options.length]=new Option(label,"")
          ?for(var i=0;i<str.length;i++)
          ?{
          ??each=str[i].split(",")
          ??sel.options[sel.options.length]=new Option(each[0],each[1])
          ?}
          }
          我把從數(shù)據(jù)庫中得到的各個專業(yè)進行了編碼,之后再這里再回歸回去,下面的是編碼過程
          public StringBuffer getDepartmentsByInstituteIdForAjax( Long instituteId )
          ??? {
          ??????? Connection connection = null;
          ??????? PreparedStatement pstmt = null;
          ??????? ResultSet rs = null;
          ??????? try
          ??????? {
          ??????????? connection = getConnection();
          ??????????? pstmt = connection
          ??????????????????? .prepareStatement( "select * from department where instituteID=?" );
          ??????????? pstmt.setLong( 1, instituteId );
          ??????????? rs = pstmt.executeQuery();
          ??????????? StringBuffer sb = new StringBuffer();
          ??????????? while ( rs.next() )
          ??????????? {
          ??????????????? sb.append( rs.getString( "department" ) + ","
          ??????????????????????? + rs.getLong( "id" ) );
          ??????????????? if ( !rs.isLast() ) sb.append( "|" );
          ??????????? }
          ??????????? return sb;
          ??????? }
          ??????? catch ( Exception e )
          ??????? {
          ??????????? e.printStackTrace();
          ??????? }
          ??????? finally
          ??????? {
          ??????????? close( rs );
          ??????????? close( pstmt );
          ??????????? close( connection );
          ??????? }
          ??????? return null;
          ??? }
          當(dāng)然這些都是由
          public ActionForward getDepartments( ActionMapping mapping,
          ??????????? ActionForm form, HttpServletRequest req, HttpServletResponse res )
          ??????????? throws Exception
          ??? {
          ??????? Service service = getService();
          ??????? res.getWriter().write(
          ??????????????? service.getDepartmentsByInstituteIdForAjax(
          ??????????????????????? Long.parseLong( req.getParameter( "institute" ) ) )
          ??????????????????????? .toString() );
          ??????? return null;
          ??? }
          來控制

          ===========班級的再這里
          public ActionForward getClasses( ActionMapping mapping, ActionForm form,
          ??????????? HttpServletRequest req, HttpServletResponse res ) throws Exception
          ??? {
          ??????? Service service = getService();
          ??????? res.getWriter().write(
          ??????????????? service.getClassesByDepartmentIdForAjax(
          ??????????????????????? Long.parseLong( req.getParameter( "department" ) ) )
          ??????????????????????? .toString() );
          ??????? return null;
          ??? }


          public StringBuffer getClassesByDepartmentIdForAjax( Long departmentId )
          ??? {
          ??????? Connection connection = null;
          ??????? PreparedStatement pstmt = null;
          ??????? ResultSet rs = null;
          ??????? try
          ??????? {
          ??????????? connection = getConnection();
          ??????????? pstmt = connection
          ??????????????????? .prepareStatement( "select * from class where departmentID=?" );
          ??????????? pstmt.setLong( 1, departmentId );
          ??????????? rs = pstmt.executeQuery();
          ??????????? StringBuffer sb = new StringBuffer();
          ??????????? while ( rs.next() )
          ??????????? {
          ??????????????? sb.append( rs.getString( "class" ) + "," + rs.getLong( "id" ) );
          ??????????????? if ( !rs.isLast() ) sb.append( "|" );
          ??????????? }
          ??????????? return sb;
          ??????? }
          ??????? catch ( Exception e )
          ??????? {
          ??????????? e.printStackTrace();
          ??????? }
          ??????? finally
          ??????? {
          ??????????? close( rs );
          ??????????? close( pstmt );
          ??????????? close( connection );
          ??????? }
          ??????? return null;
          ??? }

          function getClasses(department)
          {
          ?createXMLHttpRequest()
          ?var url = "ajax.do?department="+department+"&method=getClasses"
          ?xmlHttp.open("GET",url, true)
          ?xmlHttp.onreadystatechange = classes
          ?xmlHttp.send(null)
          }

          function classes()
          {
          ?if (xmlHttp.readyState == 4)
          ?{
          ??if (xmlHttp.status == 200)
          ??{
          ???resText = xmlHttp.responseText
          ???each = resText.split("|")
          ???buildSelect( each, document.getElementById("classid"), "請選擇所在班級");
          ??}
          ?}
          }


          評論

          # re: 體驗Struts(4)---用ajax實現(xiàn)三級下拉列表   回復(fù)  更多評論   

          2006-06-07 15:35 by 千山鳥飛絕
          不錯,好文章

          # re: 體驗Struts(4)---用ajax實現(xiàn)三級下拉列表   回復(fù)  更多評論   

          2007-06-22 14:30 by zhanglei
          功能可以實現(xiàn)但是提交出現(xiàn)異常:
          javax.servlet.jsp.JspException: Cannot find bean GetAddInfo in any scope

          at org.apache.struts.util.RequestUtils.lookup(RequestUtils.java:938)

          at org.apache.struts.taglib.html.OptionsCollectionTag.doStartTag(OptionsCollectionTag.java:219)

          at jsp_servlet.__rorder_add._jspService(__rorder_add.java:377)


          at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)

          問題就出在:<html:options collection="issue_type" property="value" labelProperty="label"/>標(biāo)簽 提交不過去。formbean已經(jīng)執(zhí)行完了,但是action.do的excute方法沒有執(zhí)行到。。不知道如何解決

          # re: 體驗Struts(4)---用ajax實現(xiàn)三級下拉列表   回復(fù)  更多評論   

          2008-08-08 09:17 by sunhe
          有沒有工程發(fā)下

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          有事在這里給我留言噢!
          主站蜘蛛池模板: 定边县| 会泽县| 广饶县| 文化| 修文县| 淮南市| 梨树县| 大关县| 龙江县| 泾川县| 皋兰县| 上虞市| 精河县| 芒康县| 车险| 霍州市| 隆尧县| 平凉市| 怀远县| 娱乐| 呈贡县| 伊川县| 石楼县| 喀喇沁旗| 随州市| 灯塔市| 四川省| 朝阳区| 呼和浩特市| 乳山市| 汶川县| 吴旗县| 台中县| 浦东新区| 资源县| 电白县| 望谟县| 红原县| 横峰县| 治县。| 怀仁县|