2010-01-22 3 views
4

로스터에 표시 할 항목 수를 제어하는 ​​드롭 다운 설정을 저장하려고합니다. 어떻게해야합니까? 드롭 다운은 onChange를 사용하여 명단의 결과를 정렬합니다.

+1

로스터 란 무엇입니까? – BalusC

+0

이것은 사용자, 항목 등의 목록 일뿐입니다. – Reden

답변

1

저는 Velocity를 사용하지 않기 때문에 여기 JSP/Servlet 타겟 답변이 있습니다. 나는 Velocity가 실제로 템플릿 엔진이며, 요청을 제어/전처리/후 처리하지 않는다는 점에서 서블릿을 사용하고 있다고 가정합니다.

따라서 후속 요청에 특정 데이터를 보관 하시겠습니까? 이것을 달성하는 기본적으로 두 가지 방법이 있습니다.

  1. 숨겨진 입력 요소에서 다음 요청의 값을 유지하십시오. 예 :

    <form action="servlet" method="post"> 
        <select name="itemcount" onchange="submit()"> 
         <option>1</option><option>2</option><option>3</option> 
        </select> 
    </form> 
    

    후 다음 요청의 형태로

    :

    <form action="servlet" method="post"> 
        <select name="sortfield" onchange="submit()"> 
         <option>col1</option><option>col2</option><option>col3</option> 
        </select> 
        <input type="hidden" name="itemcount" value="${param.itemcount}"> 
    </form> 
    

    ${param.itemcount}는 기본적으로 request.getParameter("itemcount") 반환합니다. 숨겨진 입력 요소에 저장하면 아무것도 표시되지 않지만 다음 요청에서는 request.getParameter("itemcount")까지 사용할 수 있습니다.

  2. 세션에 값을 저장하십시오. 예 : 서블릿 내부 :

    Integer itemcount = (Integer) request.getSession().getAttribute("itemcount"); 
    

    그러나 이것은 큰 경고가 있습니다 :이 "무슨 일이 발생할 수 있습니다 필요할 때마다 다음과 같이 동일한 세션에서 실행되는 서블릿에 액세스 할 수 있습니다

    Integer itemcount = Integer.valueOf(request.getParameter("itemcount")); 
    request.getSession().setAttribute("itemcount", itemcount); 
    

    있도록? " 사용자가 동일한 세션 내에서 열려있는 여러 창이 열려 있고 두 창에서 다른 항목 수를 선택할 때 발생합니다. 창 A에서 마지막으로 선택한 값이 창 B에 반영됩니다!

요청 범위에서 요청 범위 데이터를 유지해야하므로 분명히 1 방법이 더 바람직합니다. 세션 범위 데이터의 경우 세션 만 사용하십시오.

+0

BalusC, 답장을 보내 주셔서 감사합니다. 나는 이것을 구현하려고 시도했지만 아무런 결과가 없었다. 나는 이것에 상당히 새롭다. 나는 사이트를 인수했고 속도 등을 가지고있다. $ request.session.setAttribute 을 사용할 수 있다고 생각하니 getAttribute? 다시 한번 감사드립니다. – Reden