是否可以使用@请求参数为对象赋予默认值?
当我将表单标记命名为对象中的字段时,我知道它会自动为对象分配值。但如果对象的字段是int,则输入空值,则会发生错误。
★Plant_list2VO类
★ 形式
★控制器:
public String reg4(HttpServletRequest request, HttpServletResponse response,
Plant_list2VO plant_list2VO,
@RequestParam(name="inv_count", defaultValue="0") int inv_count,
@RequestParam(name="inv_count_disable", defaultValue="2") int inv_count_disable,
Model model) {
}
★控制台:
WARN : org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Resolved [org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 2 errors
Field error in object 'plant_list2VO' on field 'inv_count': rejected value [];
codes [typeMismatch.plant_list2VO.inv_count,typeMismatch.inv_count,typeMismatch.int,typeMismatch];
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [plant_list2VO.inv_count,inv_count]; arguments [];
default message [inv_count]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'inv_count'; nested exception is java.lang.NumberFormatException: For input string: ""]
Field error in object 'plant_list2VO' on field 'inv_count_disable': rejected value [];
codes [typeMismatch.plant_list2VO.inv_count_disable,typeMismatch.inv_count_disable,typeMismatch.int,typeMismatch];
arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [plant_list2VO.inv_count_disable,inv_count_disable]; arguments []; default message [inv_count_disable]];
default message [Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'inv_count_disable'; nested exception is java.lang.NumberFormatException: For input string: ""]]
根据控制台日志判断,传递给控制器的inv_count
和inv_count_disable
值不是null,而是空字符串。
我可以假设您使用的是Spring的旧版本,因为在3.2.x版本之前,空字符串值被< code > AbstractNamedValueMethodArgumentResolver 接受为实际值(请参见此处的< code>resolveArgument方法),而< code>defaultValue在那种情况下没有使用,导致转换异常,因为空字符串不能转换为整数。< br >在3.2.x和更高版本的Spring中,空字符串被视为没有传递任何值,如果存在,则使用< code>defaultValue(请参见此处的< code>resolveArgument方法)。
因此,如果您想坚持使用旧版本的Spring,您可能需要更改表单以在字段为空时发送一些默认数字,或者创建一个DTO,其中这些字段的类型为<code>String</code>,setter中有一些逻辑。
这也可能会有所帮助:是否可以让空的 RequestParam 值使用默认值?
我看到你定义了inv_count,inv_count_disable是 int 属性。因此,您应该将 defaultValue
的值更改为一个数字以解析 java.lang.NumberFormatException
我正在使用Lombok注释,但我希望一些字段是可选的,并默认为,以避免NPE。有没有一个简单的方法可以做到这一点?我什么也找不到。 或者,一种自定义的方法,用于在变量为时返回默认值。
我有一门课,比如下面的测试 有一个C1班 我给这门课打电话如下 当我调试时,我将i1设置为null。 请告知我做错了什么 注意:。我必须在xyx()中使用类Test,因为它是伪代码,并且xyx()中有很多代码
如果我在spring的控制器中有一个映射,比如: 我可以做一个注释,并将默认值10封装在上面吗?比如: 让spring像预期的那样理解我的注释。我发现https://stackabuse.com/spring-annotations-requestmapping-and-its-variants/当我看到他们用@GetMapping、@PostMapping等工具所做的事情时,我有点满怀希望。 但
以某种方式“释放”类
问题内容: 我知道SO和网络上都有很多这些问题,但是所有答案都建议使用特定于数据库的信息,因此不适用于我,因为我正在使用的系统需要在不同的数据库上运行。 我发现这个hibernate问题,有人要求使用此功能进行注释。该问题已经解决,表示另一个问题将涉及该功能。第二个问题显然添加了注释以及其他一些注释,但是我找不到有关如何使用这些新注释定义默认列值的文档。 所以我的问题是:有谁知道我该如何定义带注释