Whiteship's Note

[회사일] 다대다 관계 서브 그리드 CRUD 완성

프로젝트/SLT : 2010.06.15 14:17



팝업은 팬시박스를 사용했습니다. 이게 저번에 선택했던 컬러 머시기 보다 더 깔끔하더군요.

http://fancybox.net/home

jqGrid 다중 선택 기능을 사용했는데 아주 깔끔합니다. 그리드도 잘 선택한것 같아요.

URL은 RESTful 하게 만든다고 만들어 봤는데..

    @RequestMapping(value="/{id}/rights", method = RequestMethod.GET)
    public void rights(@PathVariable Integer id, Model model, PageParam pageParam){
        model.addAttribute("list", service.rightListOfMember(id, pageParam));
    }

    @RequestMapping(value="/{id}/rights", method = RequestMethod.POST)
    public @ResponseBody String addRights(@PathVariable("id") Integer id, @RequestParam("ids[]") Integer[] ids){
        service.addRightsToMember(id, ids);
        return "success";
    }

    @RequestMapping(value="/{id}/rights", method = RequestMethod.DELETE)
    public @ResponseBody String deleteRights(@PathVariable("id") Integer id, @RequestParam("ids[]") Integer[] ids){
        service.deleteRightsFromMember(id, ids);
        return "success";
    }

잘 동작합니다. 히든 필드 이용해서 _method에 원하는 RequestMethod 실어서 보내주면 되니깐 아주 간단하네요. HTML5 부터는 이런일 안해도 될려나.. 근데 HTML5 지원하는 브라우저가 있어도 그걸 써야 말이죠;;

지금 상태에서 한가지 굉장히 맘이 불편한 코드가 있는데.. 바로 서비스 코드입니다.

    List<Right> rightListOfMember(Integer memberId, PageParam pageParam);

    void addRightsToMember(Integer memberId, Integer[] rightsIds);

    void deleteRightsFromMember(Integer memberId, Integer[] rightsIds);

별로 객체지향적으로 보이지 않아요.. Request Parameter Oriented 프로그래밍 같지 않나요.@PathVariable로 넘어오는 값에도 분명히 바인딩이 적용될텐데... 컨트롤러에서부터 Member 타입으로 바인딩해서 가져오면 저런 코드가..

    List<Right> rightListOfMember(Member member, PageParam pageParam);

    void addRightsToMember(Member member, Right[] rights);

    void deleteRightsFromMember(Member member, Right[] rights);

이렇게 될텐데 말이죠. 흠.. 뭐좀 먹고 와서 해봐야지.

저작자 표시
신고
top




: 1 : ··· : 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : ··· : 2638 :





티스토리 툴바