2013-07-30 5 views
1

아래 jsp 코드가 있습니다. 서블릿에서 양식 값에 액세스하는 방법은 무엇입니까?

<table id="myTable" border="0" cellspacing="0" style="border-spacing:0; width:100%;border-collapse: collapse;"> 
      <% 
       List<Object> object = (List<Object>)request.getAttribute("myContact"); 
     for(int i=0;i<object.size();i++){ 
       MyModel myModel = (MyModel)object.get(i); 
       String mail = myModel.getmail()!=null ? myModel.getmail().toString().trim() : ""; 
       String title = myModel.gettitle()!=null ? myModel.gettitle().toString().trim() : ""; 
       String name = myModel.getname()!=null ? myModel.getname().toString().trim() : "";    
      %> 


      <tr> 
      <td class="table-border-bottom"><label for="name">Name:</label></td> 
      <td class="table-border-bottom"><input id="name" type="text" value='<%=name%>' name="name" class="required" style="height: 17px;"/> 
      </td> 
      <td class="table-border-bottom"><label for="contactTitle">Title:</label></td> 
      <td class="table-border-bottom"> <input id="title" type="text" value='<%=title%>' name="title" class="required" style="height: 17px;"/> 

      </td> 
      <td class="table-border-bottom"><label for="mail">Email:</label></td> 
      <td class="table-border-bottom"><input id="mail" type="text" value='<%=mail%>' name="mail" class="required email" style="height: 17px; "/> 

      </td> 
      </tr> 

    <% } %> 

      <tr align="center"> 
      <td valign="bottom" colspan="6" style="height: 45px; "> 
      <input type="button" id="submit" name="submit" value="Save" style="width: 80px ; height:24px; text-align: center;border-radius: 10px 10px 10px 10px;"/> 
      <input type="button" id="revert" name="revert" value="Revert" style="width: 80px ; height:24px;text-align: center;border-radius: 10px 10px 10px 10px;"/></td> 
      </tr> 

     </table> 

내가 서블릿에서 아래와 같은 코드를 작성할 수 있습니다 양식 값에 액세스하려면 :

String name = request.getParameter("name"); 
    String title = request.getParameter("title"); 
    String email = request.getParameter("email"); 

을하지만 내 표는 동적으로 채워집니다. 폼에 많은 필드가 있고 폼이 db에서 반환 된리스트를 반복하여 채워지는 것처럼 매개 변수가 얼마나 많은지 알 수 없습니다. 또한 양식에서 입력 이름이 하드 코딩되었습니다. db가 반환 한 목록을 기반으로하는 많은 필드가 있으므로 입력 요소에 고유 한 이름을 지정하지 않고 피할 수는 있습니까?

어떻게이 문제를 해결할 수 있습니까?

감사합니다.

+0

당신이 얻을 수있는 모든 매개 변수 http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getParameterMap%28%29 – Makky

+0

또한 그것은 자바 코드를하지 않는 것이 좋습니다 귀하의 JSP – Makky

+0

서블릿에서 배열에 저장할 수 있습니다. 예를 들어 버튼을 삽입 할 수있는 동적으로 채워진 테이블을 해결하기 위해 비슷한 문제가 있었지만 누군가가 버튼을 누를 때만 직접 문의를 표시하지 않기로했습니다. . 반면에 그리드 디스플레이에 사용하기 쉽기 때문에 EXTjs를 사용했습니다. – Deckard27

답변

1

여기에 사용하는 가장 기본적인 것은 JSTL core입니다 :

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
... 
<table> 
<c:forEach items="${myModel}" var="${myContact}" varStatus="count"> 
    <tr> 
     // I am setting the unique name for each input here 
     <td><input type="text" name="name_${count.index}"/></td> 
     <td>${myModel.name}</td> 
     ........ 
    </tr> 
</c:forEach> 

내가 already answered your question earlier 있습니다.

How to avoid Java Code in JSP-Files?을 읽으십시오.

가에 포함 된 파라미터의 이름이 포함 된 String 오브젝트의 Enumeration를 돌려줍니다 :

당신은 ServletRequest#getParameterNames() 사용할 수있는 서블릿에서 동일한 이름을 가진 많은 입력을 접근


그러나 여기 이 요청. 요청에 매개 변수가 없으면이 메서드는 빈 Enumeration을 반환합니다.

샘플 코드는 서블릿에서 request 개체에서 모든 매개 변수를 얻을 수 있습니다 :

Enumeration allParameterNames = request.getParameterNames(); 
while(allParameterNames.hasMoreElements()) 
{ 
    Object object = allParameterNames.nextElement(); 
    String param = (String)object; 
    String value = request.getParameter(param); 
    pw.println("Parameter Name is '"+param+"' and Parameter Value is '"+value+"'"); 
}  

또한 ServletRequest#getParameterMap() 방법을 사용할 수 있습니다.

이 요청의 매개 변수의 java.util.Map을 반환합니다. 요청 매개 변수는 요청과 함께 전송 된 추가 정보입니다. HTTP 서블릿의 경우 매개 변수는 쿼리 문자열 또는 게시 된 양식 데이터에 포함됩니다.

+0

또는 디스플레이 태그 http://www.displaytag.org/1.2/ – fGo

+0

예 .. 이미 JSP로 목록에 액세스하고 있다고 대답했습니다.여기에서는 서블릿에서 같은 이름을 가진 많은 입력에 액세스합니다. 감사! – user1016403

+0

@ user1016403 게시 된 코드를보고 고유 한 이름을 설정하는 방법을 알아보십시오. – NINCOMPOOP

관련 문제