代码之家  ›  专栏  ›  技术社区  ›  Mario

如何在约束自定义验证中访问url映射参数?

  •  0
  • Mario  · 技术社区  · 7 年前

    import app.UserService
    
    class UrlMappings {
    
        UserService userService
    
        static mappings = { ctx ->
    
            "/users/$id/records/$school/detail" {
                controller = 'user'
                action = 'recordsDetail'
                constraints {
                    id matches: /\d+/
                    school validator: { school, obj -> school in ctx.userService.getUserSchools(id) }
                }
            }
        }
    }
    

    我需要在学校参数中实现自定义验证。为了做到这一点,我需要打电话userService.getUserSchools用户服务(id)方法。

    当前尝试给予 java.lang.NullPointerException 带着信息 Cannot get property 'id' on null object 我需要进入 id 学校自定义验证程序中的参数。我试过了 身份证件 obj.id 但没有成功。

    谢谢你的建议

    1 回复  |  直到 7 年前
        1
  •  0
  •   Sergei Shushkevich    7 年前

    obj 在这种情况下是 RegexUrlMapping 不允许访问的 id 参数,但可以使用 org.springframework.web.context.request.RequestContextHolder

    RequestContextHolder.requestAttributes.params.id
    

    RequestContextHolder.requestAttributes.id
    
    推荐文章