当前位置: 首页 > 知识库问答 >
问题:

通过在spring中编写RequestParam注释来封装注释默认值

鲜于华容
2023-03-14

如果我在spring的控制器中有一个映射,比如:

@RequestMapping(params = "foo", method = RequestMethod.GET)
public String findAllBars(@RequestParam(value = "amount", defaultValue = "10") int amount, Model uiModel) {

我可以做一个注释,并将默认值10封装在上面吗?比如:

@RequestMapping(params = "foo", method = RequestMethod.GET)
public String findAllBars(@MyAmountAnnotation int amount, Model uiModel) {

让spring像预期的那样理解我的注释。我发现https://stackabuse.com/spring-annotations-requestmapping-and-its-variants/当我看到他们用@GetMapping、@PostMapping等工具所做的事情时,我有点满怀希望。

但是,当我尝试以下操作时,出现编译错误“RequestParam不适用于注释类型”:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RequestParam(value = "amount", defaultValue = "10")
public @interface MyAmountAnnotation {
    //...

我能这样把冗长的注释“封装”成专门的注释吗?怎么了?

共有1个答案

汪才英
2023-03-14

我认为你可以创建你的Myamountation注释,如下所示:

  @Target({ElementType.PARAMETER})
  @Retention(RetentionPolicy.RUNTIME)
  @Documented
  public @interface MyAmountAnnotation  {
    @AliasFor("name")
    String value() default "amount";

    @AliasFor("value")
    String name() default "amount";

    boolean required() default true;

    String defaultValue() default "10";
  }

并以这种方式使用它:

@RequestMapping(params = "foo", method = RequestMethod.GET)
public String findAllBars(@MyAmountAnnotation int amount, Model uiModel) {..

希望这有帮助

 类似资料:
  • 我知道DateTimeFormat注释可以在Spring中的模型类的日期属性上定义,但是有没有任何方法可以为Spring模型类中的所有日期定义一个默认的DateTimeFormat注释呢? @DateTimeFormat(pattern=“MM/DD/YYYY”) 私人日期DeliveryDate; 它将使我不必对每个日期字段进行注释。它还将使我更容易更改应用程序宽日期格式以后。

  • 我正在尝试将Spring LDAP 池上下文源 XML 配置转换为使用注释。我能够通过遵循此处提到的一个来使 Ldap 上下文源正常工作,但我无法使池上下文源正常工作。当我运行代码时,我得到了空点异常。下面列出了 XML、注释和异常代码段。 XML配置片段, 注释配置片段, 我得到的例外,

  • 是否可以使用@请求参数为对象赋予默认值? 当我将表单标记命名为对象中的字段时,我知道它会自动为对象分配值。但如果对象的字段是int,则输入空值,则会发生错误。 ★Plant_list2VO类 ★ 形式 ★控制器: ★控制台:

  • 问题内容: 我想添加一个类似于@RequestParam的注释,尽管它从请求属性而不是请求参数中提取值… 是否有一个示例或说明,以及如何为此创建自己的注释以及所需的处理程序/活页夹? 谢谢 问题答案: 标题为“扩展Spring MVC的注释控制器”的博客条目回答了您的问题。用Google搜索它,因为Stackoverflow不允许我创建直接链接。 基本上,您创建一个@RequestAttribut

  • 我正在通过Java注释来学习使用Spring 4,我找不到如何将默认的init-method设置为属于特定配置的所有bean,而不添加@PostContruct注释来初始化所有类的方法,也不使它们实现初始化Bean接口...我只想做这样的事情: 所以,我想通过Java注释来做到这一点,我想在bean的配置容器上设置默认bean配置。这可能吗?问候 编辑:我真正想做的是告诉spring在默认情况下对