RabiAPI/RabiAPI-Support

ModelAttribute 注释 不支持

Closed this issue · 8 comments

@ModelAttribute 貌似无法支持。

例如

    @PostMapping(value = "/login", produces = "application/json; charset=utf-8")
    public AdminVo login(HttpServletRequest request, @ModelAttribute AdminLoginForm adminLoginForm) throws BussException {
        return adminService.login(request, adminLoginForm);
    }

无法读取 AdminLoginForm 的参数

@ModelAttribute 这个注解的功能我不是很了解 所以暂时没有支持

@ModelAttribute 这个注解的功能我不是很了解 所以暂时没有支持

好的,这个注解的form,就是 post请求的参数。spring里用到的频次 不低吧。

实际请求的时候 这个 AdminLoginForm 对象里面的属性就是以 application/x-www-form-urlencoded 的格式传参的吗?存在其它用法吗?

是的

实际请求的时候 这个 AdminLoginForm 对象里面的属性就是以 application/x-www-form-urlencoded 的格式传参的吗?存在其它用法吗?

是的,@ModelAttribute 是 以 application/x-www-form-urlencoded 的方式提交的表单,有时候,路径中的PathValue 也会 映射到这个 表单的同名属性里。

例如:

    /**
     * 删除角色
     *
     * @param roleDeleteForm
     * @return
     * @throws BussException
     */
    @PostMapping(value = "/roles/{roleId}/delete", produces = "application/json; charset=utf-8")
    public void deleteAdminRole(@Valid @RequestBody RoleDeleteForm roleDeleteForm) throws BussException {
        adminService.deleteRole(roleDeleteForm);
    }

还有一种注释 也非常常见的是 @requestbody ,后面也是一个Form,这个就是 以JSON 格式提交的传参了。不知道是否支持了。

@requestbody 是支持的 并且在没有提供Content-Type的情况下 会默认为application/json类型 同时标注为 BODY 类型的参数

那我就在下个小版本里修复一下了

那我就在下个小版本里修复一下了

期待修复

@keepcleargas 1.2.3 版本已修复这个问题