Roo скрытое поле в Jspx - PullRequest
1 голос
/ 16 мая 2011

Я хочу иметь скрытое поле в файле jspx.

Я хотел бы автоматически сохранить имя аутентифицированного пользователя в базе данных.Вот как я это делаю:

Измените мой bean-компонент следующим образом:

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

Посмотрев вокруг, я обнаружил, что мне пришлось использовать render = "false" на моей странице create.jspx, но когдадля параметра render установлено значение false, данные из моего поля ввода не сохраняются в моей базе данных.

Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 17 мая 2011

Я возобновлю то, что я сделал, для моих товарищей-новичков.

Первый шаг: вырежьте мой метод из моего контроллера roo (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);

    }

Второй шаг: вставьте метод в контроллер Java (EntityController.java)

Третий шаг: отредактируйте метод, чтобы получить usernmae и модифицировать мой метод с его помощью

  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 голос
/ 16 мая 2011

Почему бы просто не создать аспект, который перехватывает сохранение целевого объекта и добавляет соответствующее поле или переопределяет соответствующий метод в Spring Controller в ITD, копируя его прямо в * .java controller и добавляя туда поле?

0 голосов
/ 08 июля 2014

Комбинация disableFormBinding и type должна работать, как показано ниже.

Примечание: не уверен, если он сконструирован так:)

...