相关疑难解决方法(0)

哪些类型可用于Java注释成员?

今天我想按照这个文档创建我的第一个注释界面,我得到了编译器错误

Invalid type for annotation member":
public @interface MyAnnotation {
    Object myParameter;
    ^^^^^^
}
Run Code Online (Sandbox Code Playgroud)

显然Object不能用作注释成员的类型.不幸的是,我找不到任何关于哪些类型可以使用的信息.

我发现这是使用反复试验:

  • String →有效
  • int →有效
  • Integer →无效(令人惊讶)
  • String[] →有效(令人惊讶)
  • Object →无效

也许某人可以了解实际允许哪些类型以及原因.

java annotations

219
推荐指数
4
解决办法
8万
查看次数

是否可以使用defaultValue空RequestParam值?

如果我有一个类似于以下的请求映射:

@RequestMapping(value = "/test", method = RequestMethod.POST)
@ResponseBody
public void test(@RequestParam(value = "i", defaultValue = "10") int i) {
}
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令调用此请求:

http://example.com/test?i=
Run Code Online (Sandbox Code Playgroud)

我收到错误消息

无法将类型'java.lang.String'的值转换为'int'类型; 嵌套异常是java.lang.NumberFormatException:对于输入字符串:""'

我可以通过阻止javascript客户端发送空参数,或者接受字符串值并仅解析它们是否为空白来解决这个问题.

更新:更高版本的spring现在实现了最初所需的行为.

我刚刚在4.3.5春季对此进行了测试,并且发现该行为现在实际上将空值转换为默认值而不提高a NumberFormatException,因此; 我的原始映射现在工作正常.

我不确定这个行为改变的弹簧版本是哪个版本.

java spring spring-mvc

112
推荐指数
4
解决办法
20万
查看次数

标签 统计

java ×2

annotations ×1

spring ×1

spring-mvc ×1