获取同一控制器中不同方法的@RequestMapping值
Get @RequestMapping value of different method in same controller
使用 Spring 引导,我的 RegisterController
中有几个方法可以处理新用户注册。
createNewUser
方法负责将新用户保存到数据库并发送一封确认电子邮件,其中包含具有唯一令牌的 link。
confirmUser
方法处理确认 link 的 GET 请求。
有没有办法让 createNewUser
方法获得分配给 confirmUser
的 @RequestMapping
值?我想使用这个值来生成确认 link 而不是对其进行硬编码。
// Process form input data
@RequestMapping(value = "/register", method = RequestMethod.POST)
public ModelAndView createNewUser(@Valid User user, BindingResult bindingResult) {
}
// Process confirmation link
// Link in confirmation e-mail will be /registerConfirmation?token=UUID
@RequestMapping(value="/registerConfirmation", method = RequestMethod.GET)
public ModelAndView confirmUser( @RequestParam("token") String token) {
}
我不知道有什么方法可以从 @RequestMapping
值中获取它,但您有几个不同的选择。
选项 1:为映射创建常量并使用允许您在两种方法中引用它的常量。
private final static String REGISTER_CONF_VAL = "/registerConfirmation";
@RequestMapping(value = "/register", method = RequestMethod.POST)
public ModelAndView createNewUser(@Valid User user, BindingResult bindingResult) {
}
// Process confirmation link
// Link in confirmation e-mail will be /registerConfirmation?token=UUID
@RequestMapping(value=REGISTER_CONF_VAL, method = RequestMethod.GET)
public ModelAndView confirmUser( @RequestParam("token") String token) {
}
选项 2:不太理想,但如果您将 registerConfirmation
添加到您的配置文件,您可以像这样访问它:
@RequestMapping(value="${register.conf.val}", method = RequestMethod.GET)
public ModelAndView confirmUser( @RequestParam("token") String token) {
}
这不是理想的原因是因为您可能不希望它因环境而异。也就是说,它会起作用。
如果需要根据用户请求生成link,可以在控制器中使用Path Variable。您可以获得路径变量并使用某种机制来验证路径。
将registerConfirmation替换为{registerConfirmation},并在方法中使用@PathVariable注解获取路径。使用变量检查路径是否有效。
使用 Spring 引导,我的 RegisterController
中有几个方法可以处理新用户注册。
createNewUser
方法负责将新用户保存到数据库并发送一封确认电子邮件,其中包含具有唯一令牌的 link。
confirmUser
方法处理确认 link 的 GET 请求。
有没有办法让 createNewUser
方法获得分配给 confirmUser
的 @RequestMapping
值?我想使用这个值来生成确认 link 而不是对其进行硬编码。
// Process form input data
@RequestMapping(value = "/register", method = RequestMethod.POST)
public ModelAndView createNewUser(@Valid User user, BindingResult bindingResult) {
}
// Process confirmation link
// Link in confirmation e-mail will be /registerConfirmation?token=UUID
@RequestMapping(value="/registerConfirmation", method = RequestMethod.GET)
public ModelAndView confirmUser( @RequestParam("token") String token) {
}
我不知道有什么方法可以从 @RequestMapping
值中获取它,但您有几个不同的选择。
选项 1:为映射创建常量并使用允许您在两种方法中引用它的常量。
private final static String REGISTER_CONF_VAL = "/registerConfirmation";
@RequestMapping(value = "/register", method = RequestMethod.POST)
public ModelAndView createNewUser(@Valid User user, BindingResult bindingResult) {
}
// Process confirmation link
// Link in confirmation e-mail will be /registerConfirmation?token=UUID
@RequestMapping(value=REGISTER_CONF_VAL, method = RequestMethod.GET)
public ModelAndView confirmUser( @RequestParam("token") String token) {
}
选项 2:不太理想,但如果您将 registerConfirmation
添加到您的配置文件,您可以像这样访问它:
@RequestMapping(value="${register.conf.val}", method = RequestMethod.GET)
public ModelAndView confirmUser( @RequestParam("token") String token) {
}
这不是理想的原因是因为您可能不希望它因环境而异。也就是说,它会起作用。
如果需要根据用户请求生成link,可以在控制器中使用Path Variable。您可以获得路径变量并使用某种机制来验证路径。
将registerConfirmation替换为{registerConfirmation},并在方法中使用@PathVariable注解获取路径。使用变量检查路径是否有效。