<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
    有沒有工程發下

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


    網站導航:
     
    有事在這里給我留言噢!
    主站蜘蛛池模板: 91嫩草国产在线观看免费| 免费无码作爱视频| 成年女人毛片免费播放视频m| 久久亚洲AV成人无码软件| 人妻在线日韩免费视频| 伊人久久大香线蕉亚洲五月天| 九一在线完整视频免费观看| 亚洲日韩国产精品乱| 99免费精品视频| 亚洲AV永久无码精品一百度影院| 久久免费美女视频| 亚洲狠狠狠一区二区三区| 最近中文字幕无吗高清免费视频| 国产成人精品久久亚洲高清不卡| 国产亚洲精品免费| 拍拍拍无挡视频免费观看1000| 亚洲国产成人一区二区精品区| www视频在线观看免费| 日本亚洲色大成网站www久久| 情侣视频精品免费的国产| 女人裸身j部免费视频无遮挡| 亚洲综合AV在线在线播放| 1000部禁片黄的免费看| 亚洲综合小说另类图片动图| 国产在线98福利播放视频免费| 国产福利免费视频| 亚洲色偷偷av男人的天堂| 女人张开腿给人桶免费视频| 深夜福利在线免费观看| 亚洲av永久无码精品表情包| 大地资源免费更新在线播放| 人妻仑乱A级毛片免费看| 亚洲精品私拍国产福利在线| 成人性生交大片免费看无遮挡| 一区二区三区免费看| 1区1区3区4区产品亚洲| 免费又黄又硬又爽大片| 无码人妻一区二区三区免费看 | 九九久久国产精品免费热6| 国产AV无码专区亚洲AV毛网站| 一区二区无码免费视频网站|