2011-05-16 3 views
1

jspx 파일에 숨겨진 필드를 갖고 싶습니다.Jspx의 Roo hidden 필드

내가하고 싶은 것은 자동으로 인증 된 사용자의 이름을 데이터베이스에 저장하는 것입니다. 다음은 내가 그것을 할 방법 :

는 내 콩을 수정

public void Got.setUserkt(String userkt) { 
     final String currentUser = SecurityContextHolder.getContext().getAuthentication().getName(); 
     this.userkt = currentUser; 
    } 

주위에 보면 내가 내 create.jspx 페이지 = "false"를 렌더링 사용했다하지만 그 발견으로 설정되어 렌더링 할 때 false, 입력 필드의 데이터가 내 데이터베이스에 저장되지 않습니다.

내가 뭘 잘못하고 있니?

답변

2

동료 신참을 위해 내가 한 일을 재개 할 것입니다.

] 제 1 공정 내 루 CONTROLER에서 내 방법 컷 (EntityController_Roo_Controller.aj)

@RequestMapping(method = RequestMethod.POST) 

    public String create(@Valid Got got, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) { 

     if (bindingResult.hasErrors()) { 

      uiModel.addAttribute("got", got); 

      addDateTimeFormatPatterns(uiModel); 

      return "gots/create"; 

     } 

     uiModel.asMap().clear(); 

     got.persist(); 

     return "redirect:/gots/" + encodeUrlPathSegment(got.getId().toString(), httpServletRequest); 

    } 

제 2 공정 자바 콘트롤로 메도 붙이기 (EntityController.java)

세 번째 단계 : 사용자 인터페이스를 사용하여 메소드를 수정하고 내 메소드를 수정하십시오.

  1. 는 매개 변수
  2. 갱신 내 법인으로 주요 주체를 추가 : got.setUserkt (principal.getName());

    @RequestMapping (방법 = RequestMethod.POST) 다시

    public String create(@Valid Got got, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest, Principal principal) { 
    
        if (bindingResult.hasErrors()) { 
    
         uiModel.addAttribute("got", got); 
    
         addDateTimeFormatPatterns(uiModel); 
    
         return "gots/create"; 
    
        } 
    
        uiModel.asMap().clear(); 
    
        got.setUserkt(principal.getName()); 
    
        got.persist(); 
    
    
    
        return "redirect:/gots/" + encodeUrlPathSegment(got.getId().toString(), httpServletRequest); 
    
    } 
    

감사합니다!

1

저장 대상 엔티티를 가로 채고 해당 필드를 추가하거나 ITD의 Spring Controller에서 대응하는 메소드를 * .java 컨트롤러로 복사하고 거기에 필드를 추가하여 해당 메소드를 대체하는 이유는 무엇입니까?

+0

. 나는 당신이 봄을 잘 볼 수 있습니다 ... – gpasse

+0

말해, 내가 그 방법에 대한 좋은 튜토리얼을 찾을 수 있을까요? – gpasse

+0

튜토리얼을 찾을 수 없지만 [이 링크] (http://forum.springsource.org/showthread.php?100109-can-i-override-the-method() -in-controller-OR- 도메인). 그래서 타겟 컨트롤러의 ITD ('XxxController_Roo_Controller.aj' 파일)에서 target 메소드를 선택하고 Eclipse에서 사용할 수 있어야하는'Push In' 리팩토링을 수행하십시오. 그런 다음'XxxController.java'를 열고 (코드 스 니펫 에서처럼) 저장하기 전에 엔티티 수정을 수행하십시오. Roo 콘솔을 실행하면서 실행해야한다는 것을 기억하십시오. 첫 번째 조언 (aspect 생성)에 관해서는 AspectJ에 관한 내용을 읽어보기 만하면된다. – Constantiner

0

아래와 같이 disableFormBinding과 type의 조합이 작동해야합니다.

주 :이 :)처럼 설계 확실하지 경우

좋은 생각
+0

필드 : 입력 disableFormBinding = "true"type = "숨김" – Sharphill