2011-12-16 3 views
-2

두 개의 드롭 다운 위치 및 부서가있는 JSP가 있습니다.서블릿에서 JSP 드롭 다운 값에 액세스 할 수 없습니다.

부서 드롭 다운 값은 Ajax를 통한 위치 값을 기반으로 채워집니다.

그러나 페이지를 저장하려고 할 때 부서 드롭 다운의 첫 번째 항목이 선택되면 부서 드롭 다운 값에 액세스 할 수 없습니다.

하지만 두 번째 또는 세 번째 항목을 선택하면 서블릿에서 액세스 할 수 있습니다.

<form id="form1" name="crtdocfrm" action="CreateLocation" method="post"> 
    <fieldset width="50%"> 
    <legend>Division</legend> 
    <table id="table1"> 
     <tr class="tr_stylebutton"> 
     <td>Location Name</td> 
     <td><select name="locName" onChange="showDept(this.value)"> 
      <option value="-1">--select--</option> 
      <% 
      Iterator itrLocation = arlLocation.iterator(); 
      while (itrLocation.hasNext()) { 
      %> 
      <option value=<%=itrLocation.next()%>><%=itrLocation.next()%> 
      </option> 
      <%}%> 
     </select></td> 
     </tr> 

     <tr class="tr_stylebutton"> 
     <td>Department Name</td> 
     <td> 
      <select name="ddDeptName" onChange="alert(this.value)"></select> 
     </td> 

     </tr> 
     <tr class="tr_stylebutton"> 
     <td>Division ID</td> 
     <% 
      LocationPolulate lp = new LocationPolulate(); 
      int Div_Id = lp.DivisionId(); 
     %> 
     <td><input type="text" name="divID" disabled="true" value=<%=Div_Id + 1%>/></td> 
     </tr> 

     <tr class="tr_stylebutton"> 
     <td>Division Name</td> 
     <td><input type="text" name="divName" value=""/></td> 
     </tr> 
    </table> 

    <table border="0" width="55%" align="left" id="table-button"> 
     <tr class="tr_stylebutton"> 
     <td align="right"><input type="submit" value="Save" class="button"/></td> 
     <td align="left"><input type="submit" value="Cancel" class="button"/></td> 
     </tr> 
    </table> 
    </fieldset> 
    &nbsp;&nbsp;<br/> 
</form> 

서블릿

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 

    int intLocId = Integer.parseInt(request.getParameter("locName")); 
    String strDivNm = (String) request.getParameter("divName"); 
    int intDeptId = Integer.parseInt(request.getParameter("ddDeptName")); 

    LocationPolulate lp = new LocationPolulate(); 
    int Res = lp.InsertDivision(strDivNm, intLocId, intDeptId); 

    if (Res == 0) { 
     request.setAttribute("Errmsg", "Error Cannot Save Division"); 
     RequestDispatcher dis1 = getServletContext().getRequestDispatcher("/AddDivision"); 
     dis1.forward(request, response); 
    } else { 
     int Div = lp.DivisionId(); 
     request.setAttribute("succmsg", "Successfully saved Division with division id:" + Div); 
     RequestDispatcher dis1 = getServletContext().getRequestDispatcher("AddDivision.jsp"); 
     dis1.forward(request, response); 
    } 
} 

어떤 아이디어가?

+0

stateChanged 여기 함수() { 경우 (xmlHttp.readyState의 == 4 || xmlHttp.readyState == "완료") { VAR으로 만들었 = xmlHttp.responseText; var strar = showdata.split (":"); \t if (strar.length == 1) \t {document.getElementById ("locName"). focus(); \t 알림 ("위치 ID를 선택하십시오"); \t \t else if (strar.length> 1) \t {option = new Option ("--- Select ---", -1); document.crtdocfrm.ddDeptName.options [0] = option; for (var i = 0; i Alivia

+4

그냥 궁금, 당신은 당신의 코드를 읽을 찾을 수 있습니까? – BalusC

+1

옵션 태그 Iterator에서 각 옵션에 대해'.next()'메소드를 두 번 호출했음을 알고 계십니까? 한 번은 value, 한 번은 표시 값입니까? –

답변

0

코멘트가 아닌 부분으로 코드를 추가하여 죄송합니다 ... 전체 코드에 맞지 않아서 코멘트를 추가해야했습니다. 자바 스크립트에서 실수가있었습니다. 정확한 하나가 아래에 주어집니다. 감사합니다. 모두 감사합니다. 귀하의 제안에 대한 ...

function stateChanged() 
{ 
    if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") 
    { 
     var showdata = xmlHttp.responseText; 
     var strar = showdata.split(":"); 

     if(strar.length==1) 
     { 
      document.getElementById("locName").focus(); 
      alert("Please Select location Id"); 
     } 
     else if(strar.length>1) 
     { 
      option=new Option("---Select---", -1); 

      document.crtdocfrm.ddDeptName.options[0]=option; 
      for(var i=1;i<strar.length-1;i=i+2) 
      { 
       option=new Option(strar[i+1], strar[i]); 
       document.crtdocfrm.ddDeptName.options[(i-1)/2+1]=option; 
      } 
     } 
    } 
} 

내가 다른 JSP에서 같은 문자열의 ID와 이름을 얻고 다른 부서 ID와 이름의 값을 얻기 위해 그것을 spliting하고있다.

관련 문제