2011-10-06 4 views
0

내 웹 앱에서 서블릿에 올바른 엔티티 키를 보내는 것처럼 보이지 않습니다. 자바 스크립트 메서드를 사용하여 단추를 통해 데이터가있는 폼을 전송합니다. 난 JSTL 5 개 레코드를 읽어 코드를 테스트 할 때 지금Cant가 서블릿에 올바른 키를 보냅니다.

//Check if fornecedor as been selected    
      int Fid = Integer.parseInt(request.getParameter("MOForn")); 

      //Get fornecedor object and set it to variable 
      Forn = transManager.getEnt(Fid,"fornecedor"); 

      request.setAttribute("Forn",Forn);  

      PagesInF="FModificar"; 
      request.setAttribute("PagesInF", PagesInF); 
      userPath = "/Fornecedor";    

:

<c:if test="${!empty MOFornecedorList}">  
         <div id="RightColumn"> 
           <%-- Search Box --%> 
             <div class="searchform"> 
               <form id="formsearch" name="formsearch" method="post" action="<c:url value='FProcurar'/>"> 
               <span> 
                <input name="searchBox" class="editbox_search" id="editbox_search" size="80" maxlength="100" value="Pesquisa" type="text" /> 
               </span> 
               <input name="btnsearch" class="button_search" value="Pesquisa" type="button"/> 
               </form> 
              <div class="clr"></div> 
              <h>Criterio de Pesquisa: </h>         
              <select name="Type">          
               <option value="1">ID</option> 
               <option value="2">Nome</option> 
               <option value="3">Email</option> 
               <option value="4">Fax</option> 
               <option value="5">Endereço</option>            
              </select> 

             </div> 
           <%-- END Search Box --%> 
         <div class="clr"></div> 
          <table id="ProductTable" class="detailsTable"> 

           <tr class="header"> 
            <th colspan="9" >Modificar Fornecedor</th> 
           </tr> 

           <tr class="tableHeading"> 
            <td>ID</td> 
            <td>Nome</td> 
            <td>Endereço</td>          
            <td>Nº de Celular</td> 
            <td>Nº de Telefone</td> 
            <td>Email</td>  
            <td>Fax</td> 
            <td>Descrição</td> 
            <td></td> 
           </tr> 

           <c:forEach var="MOForn" items="${MOFornecedorList}" varStatus="iter"> 

            <tr class="${'white'} tableRow"> 
             <td>${MOForn.getFid()}</td> 
             <td>${MOForn.getFNome()}</td> 
             <td>${MOForn.getFEndereco()}</td>           
             <td>${MOForn.getFNCel()}</td> 
             <td>${MOForn.getFNTel()}</td> 
             <td>${MOForn.getFEmail()}</td>  
             <td>${MOForn.getFFax()}</td> 
             <td>${MOForn.getFDescricao()}</td> 

             <td> 
              <form action="<c:url value='FMOb'/>" method="post" name="FModifi"> 
               <input type="hidden" 
                 name="MOForn" 
                 value="${MOForn.fid}">             
               <input type="button" 
                 value="Modificar" onclick="ModF()"> 
              </form> 
             </td> 
            </tr> 

           </c:forEach> 

          </table> 
          </div> 
         </c:if> 

자바 스크립트 방법

function ModF() { 
        jConfirm('Modificar o Fornecedor?', 'Confirmação', function(r) { 

          if (r == true) {          
           $("form[name='FModifi']").submit();       
           } else { 
            return false; 
           } 
        }); 
       } 

컨트롤러 번호 : 코드 JSTL 코드로 나누는 것이다 MOFornecedorList 항목에 오름차순으로 입력하면 버튼이 마지막 열에 만들어집니다.

예를 들어 세 번째 레코드에서 버튼을 누르면 JavaScript 메서드 Modf()가 호출되고 확인 대화 상자가 표시됩니다.

사용자가 확인 버튼을 누르면 FModifi 양식이 제출됩니다.

그런 다음 서블릿은 FMOb 페이지를 열기위한 요청을 받게됩니다. 여기에서 눌려진 버튼에 대한 숨겨진 입력이 검색되어 변수 유형 int에 저장되고 다른 일부 코드가 실행됩니다.

하지만 양식 제출 값이 잘못되었습니다. 예 :

1 - 버튼 - MOforn = 1

2 - 버튼 - MOforn = 2

3 - 버튼 - MOforn = 3 (클릭)

4 - 버튼 - MOforn = 4

5 - - 버튼 MOforn = 5

폼 (3)의 값을 전송하지만 제

01,235,164의 값을 전송해야

어떤 아이디어로도 공유하시기 바랍니다.

답변

0

같은 이름의 여러 양식이 있습니다. JS 함수가 호출 된 양식을 제출하지 않고 HTML DOM 트리에 해당 이름의 양식이 마지막으로 출제됩니다.

function confirmSubmit(form) { 
    jConfirm('Modificar o Fornecedor?', 'Confirmação', function(confirmed) { 
     if (confirmed) { 
      form.submit(); 
     } 
    } 
} 

은 또한 더 자기 문서화 변수를 사용하는 것이 좋습니다 및 거라고 다음과 같이

당신은

<input type="button" value="Modificar" onclick="ModF()"> 

<input type="button" value="Modificar" onclick="confirmSubmit(this.form)"> 

로 교체하고 기능을 다시 작성할 필요 위에서 제시 한 것과 같은 함수 이름을 사용하면 코드를 장기간에 쉽게 이해하고 유지할 수 있습니다 (onl이 아니라 당신 자신을 위해서뿐만 아니라 다른 사람들을 위해, 예를 들어 질문을 게시 할 때 대답을 기대하는 Stackoverflow.com의 것들 ...)

관련 문제