在Jspx的Roo隐藏字段

时间:2011-05-16 15:12:45

标签: spring-roo

我想在jspx文件中有一个隐藏字段。

我想要做的是自动将身份验证用户的名称保存在数据库中。我是这样做的:

使用以下命令修改我的bean:

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

环顾四周,我发现我必须在create.jspx页面中使用render =“false”,但是当render设置为false时,我输入字段中的数据不会保存在我的数据库中。

我做错了什么?

3 个答案:

答案 0 :(得分:2)

对于我的新秀,我会恢复我的所作所为。

第一步:从我的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)

第三步:编辑方法以获取用户名并使用它修改我的方法

  1. 添加校长负责人 参数
  2. 更新我的实体: got.setUserkt(principal.getName());

    @RequestMapping(method = 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);
    
    }
    
  3. 再次感谢!

答案 1 :(得分:1)

为什么不创建一个拦截保存目标实体的方面,并在ITD的Spring Controller中添加相应的字段或覆盖相应的方法,将其复制到* .java控制器并在那里添加字段?

答案 2 :(得分:0)

disableFormBinding和type的组合应该可以工作,如下所示。

注意:不确定它是否设计如下:)