<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

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

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

    學院是上來就應該有的,我們把他放到了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( "請選擇所在學院", "" ) );
    ??????????? 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;
    ??? }
    而當它選擇了一個學院后,相應的getDepartments(this.value)的js腳本就該工作了,還是四步
    var xmlHttp;
    function createXMLHttpRequest()
    {
    ?if (window.XMLHttpRequest)
    ?{
    ??xmlHttp = new XMLHttpRequest();
    ?}
    ?else if (window.ActiveXObject)
    ?{
    ??xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    ??? }
    }
    發出請求
    function getDepartments(institute)
    {
    ?createXMLHttpRequest()
    ?var url = "ajax.do?institute="+institute+"&method=getDepartments"
    ?xmlHttp.open("GET",url, true)
    ?xmlHttp.onreadystatechange = departments
    ?xmlHttp.send(null)
    }
    處理響應
    function departments()
    {
    ?if (xmlHttp.readyState == 4)
    ?{
    ??if (xmlHttp.status == 200)
    ??{
    ???resText = xmlHttp.responseText
    ???each = resText.split("|")
    ???buildSelect( each, document.getElementById("departmentId"), "請選擇所在專業");
    ??}
    ?}
    }
    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])
    ?}
    }
    我把從數據庫中得到的各個專業進行了編碼,之后再這里再回歸回去,下面的是編碼過程
    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;
    ??? }
    當然這些都是由
    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實現三級下拉列表   回復  更多評論   

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

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

    2007-06-22 14:30 by zhanglei
    功能可以實現但是提交出現異常:
    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"/>標簽 提交不過去。formbean已經執行完了,但是action.do的excute方法沒有執行到。。不知道如何解決

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

    2008-08-08 09:17 by sunhe
    有沒有工程發下

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


    網站導航:
     
    有事在這里給我留言噢!
    主站蜘蛛池模板: 四虎1515hm免费国产| 免费毛片a线观看| 最近中文字幕免费mv视频7| 国产免费黄色大片| 亚洲jjzzjjzz在线播放| 免费女人高潮流视频在线观看| 亚洲深深色噜噜狠狠爱网站| 本道天堂成在人线av无码免费| 国产亚洲精品自在线观看| 人体大胆做受免费视频| 亚洲综合亚洲综合网成人| 国产97视频人人做人人爱免费| 国产成人亚洲精品狼色在线| 中文字幕免费在线看| 亚洲AV成人精品网站在线播放| 日韩人妻无码精品久久免费一| 亚洲男人天堂影院| 好先生在线观看免费播放| 亚洲精品久久无码av片俺去也 | 99re6免费视频| 亚洲国产精品美女| 成全高清视频免费观看| 综合偷自拍亚洲乱中文字幕| 国产精品亚洲美女久久久| 男人的天堂网免费网站| 亚洲一级毛片免费观看| 免费萌白酱国产一区二区| 成人免费乱码大片A毛片| 亚洲理论片在线观看| 国产精品免费小视频| 少妇性饥渴无码A区免费| 亚洲成a人片在线观看播放| 日韩一级免费视频| 99免费精品视频| 亚洲综合久久一本伊伊区| 亚洲成A人片77777国产| 57pao国产成视频免费播放| 国产成人亚洲精品电影| 亚洲大成色www永久网站| 我想看一级毛片免费的| 国产一级婬片A视频免费观看|