2017년 7월 18일 화요일

form:select 이용하여 현재 가진 아이템 수만큼 셀렉트 숫자 보이게 하기





1
2
3
4
5
6
7
8
9
10
 // JSP
<form:form action="d1_order" modelAttribute="item" method="post" enctype="multipart/form-data">
    <td><form:input path="no" type="text" class="form-control" readonly="true"/></td>
    <td><form:input path="item" type="text" class="form-control" placeholder="물품명" readonly="true"/></td>
    <td><form:input path="price" type="text" class="form-control" placeholder="물품가격" readonly="true"/></td>
    <td><form:select class="form-control" path="cnt" items="${count}" /></td>
    <td><input class="button" type="submit" value="주문하기"/></td>
</form:form>
 
 
cs



<td><form:select class="form-control" path="cnt" items="${count}" /></td>



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Controller
 
    @RequestMapping(value = "d1_order", method = RequestMethod.GET)
    public String d1_item_order1(@RequestParam("no")int no,Model model) {
        Exam1_item item1 = dDAO.getItemOne(no);
               
        List<Integer> cnt = new ArrayList<Integer>();
        for(int i=1;i<=item1.getCnt();i++){
            if(i>1000){
                break;
            }
            cnt.add(i);
        }
        
        item1.setCnt(20);
        model.addAttribute("item", item1);
        model.addAttribute("count", cnt);
        return "d1/order1";
    }
cs


        Exam1_item item1 = dDAO.getItemOne(no);
               
        List<Integer> cnt = new ArrayList<Integer>();
item1 에서 no를 가지고 와서 그 해당no의 아이템이 가지고 있는 수량 (cnt)을 담기 위해
List 로 cnt 생성자를 만들어준다. (가지고 오는 수량의 타입이 int 이기에 Integer List를 만들었다.)

        for(int i=1;i<=item1.getCnt();i++){
            if(i>1000){
                break;
            }
            cnt.add(i);
가지고 있는 수량 만큼을 반복해서 출력한 값 List 이기에 add 메소드를 사용하여
담아준다.
만약 수량이 1000개가 넘으면 반복문을 빠져 나와 1000까지만 담는다.

        item1.setCnt(20);

기본 셋팅값을 20으로 설정. JSP에서 화면 출력시 select에 20으로 초점이 맞춰져있다.
1로 하면 1로 기본 셋팅 된다.


        model.addAttribute("item", item1);
        model.addAttribute("count", cnt);
        return "d1/order1";

item1의 목록과 방금 얻은 cnt값을 각자 JSP로 던져 준다.

JSP에서 받을 때 (하나는 modelAttribute, path값을 이용, 다른하나는 items="${count}" 값을 이용

<form:form action="d1_order" modelAttribute="item" method="post" enctype="multipart/form-data">

<td><form:select class="form-control" path="cnt" items="${count}" /></td>



































댓글 없음:

댓글 쓰기