2012-06-15 4 views
1

사용자에게 항목 목록을 표시하는 Spring MVC 응용 프로그램을 만들었습니다. JSP에서 해당 항목의 순서를 변경하여 새 주문을 서버에 제출할 수있는 방법은 무엇입니까?양식의 목록 항목 순서를 변경하는 방법은 무엇입니까?

  1. 애완 동물 고양이
  2. 애완 동물 개
  3. 애완 동물 조류 목록은이 양식으로 구성되어

:

예를 들어

, 사용자는 다음과 같은 목록을 가져옵니다

<form:form action="/modifypetlist.do" method="POST" modelAttribute="petList"> 
    <fieldset> 
    <div> 
     <ul id="sortable"> 
     <c:forEach items="${petList.list}" varStatus="vs"> 
      <li class="ui-state-default"> 
      <form:label path="list[${vs.index}].pet">Pet</form:label> 
      <form:input path="list[${vs.index}].pet" /> 
      </li> 
     </c:forEach> 
     </ul> 
    </div> 
    <input type="submit" value="send"> 
    </fieldset> 
</form:form> 

일부 Javas가 포함되어 있습니다. 사용자가 목록의 행을 드래그 앤 드롭 할 수있게 해주는 cript. 개 라인을 고양이 라인 위로 이동하십시오.

서버와 어떻게 통신합니까? (어떻게 양식 필드에서 petList 모델을 다시 작성할 수 있습니까?) 양식을 제출 한 후 현재 서버의 목록을 읽을 수 있지만 양식의 이름을 변경하더라도 목록 항목이 원래 순서대로 나타납니다 (예 : Cat -> 마우스)

답변

1

자연스럽게 기본 키 (인덱스)로 정렬되므로 대개 행의 ID입니다.

데이터가 정렬되면 업데이트 할 테이블에 "순위"필드를 추가하고 순위별로 결과를 정렬하십시오.

+0

계획과 비슷하지만 자바 스크립트에서 "순위"를 변경하는 방법이 있습니다 (목록 항목을 드래그 할 때)? 아니면 양식에있는 구 학교 숫자 입력란에 정착해야합니까? – wannabeartist

+0

물론 자바 스크립트에서 물건을 움직일 수있는 방법이 있지만 어떻게 그 순서를 유지해야할까요? 정말 좋은 생각처럼 들리지 않는 데이터베이스 bu의 목록에있는 항목의 ID를 바꿀 수 있습니다. –

1

주문 정보를 지속 레이어에 유지해야합니다. 이렇게하면 주문을 수정할 때마다 호출 (예 : javascript ajax 호출)을 트리거해야합니다. 이 호출은 응용 프로그램 서버에 요청하여 해당 목록에 대한 지속성 계층을 업데이트하는 적절한 서비스를 호출해야합니다.

그런 다음 지속성 레이어를 조정하여 페이지를 표시하기 위해 이전에 유지했던 "순위"정보로 목록을 정렬해야합니다.

가장 효율적인 방법이라고 생각합니다.

행운을 빈다.

+0

흠, 의미가 있습니다. 내 문제는 내 목록이 한 번에 목록을 수정하려는 욕구에 뿌리를 둔 것 같습니다 (항목을 추가하고 삭제하고 순서를 변경 한 다음 한 번에 새 목록 저장). 실제로 각 변경 사항을 별도로 처리하는 것보다 다른 합리적인 방법이없는 것 같습니다. – wannabeartist

+0

다음 작업을 수행 할 수 있습니다. 목록에서 발생하는 모든 이벤트에서 응용 프로그램 서버에 대한 호출이 트리거됩니다. 이 호출에는 전체 목록 상태가 포함되며 지속성 계층은 매번 모든 것을 덮어 씁니다. 그렇게하면 목록에있는 하나의 작업으로 모든 가능성이 처리됩니다. –

관련 문제