问题标签 [spring-mvc-initbinders]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1298 浏览

spring-mvc - 多个表单对象上的 InitBinder

你能@Initbinder在同一个表格中有几个数据吗?

我有一个弹簧表单,其中包含一个对象的选择下拉列表和两个数据字段,我在日期上有一个 Initbinder,否则我在提交时会出错。但我还需要将下拉列表绑定到一个对象。

我有一个类型,它有两个日期和一个Category,它是Category我需要绑定的,因为它在保存时不能为空。我认为这将帮助我验证表格。那么我可以在我的类型控制器中使用它吗?

这是编辑器:

还有我的jsp页面

所以我的问题是:initBinder我的控制器中可以有多个活页夹吗?好像我不能,因为我从来没有进入CategoryEditor. 我该怎么做呢?

0 投票
1 回答
996 浏览

spring-mvc - modelAttribute(对象列表)在 Spring MVC 中随机返回空参数

我是 Spring MVC 的新手,我在调试这个问题时有点卡住了。我从我的数据库中获取一些详细信息并将它们从我的控制器发送到 JSP,并且我能够正确显示它。当我出于某些测试目的尝试将相同的表单提交回控制器时,很少有属性值为空。

这是我的jsp(预览)

这是我的控制器日志

请帮助我理解并解决问题,如果您需要任何进一步的信息

0 投票
1 回答
2035 浏览

spring - Spring MVC - 未调用 @init binder 方法

嗨,这是我的控制器

以下是我的验证器

问题是我的验证器并没有全部被调用。每次条件bindResult.hasErrors() || bindResult.hasFieldErrors() 都是false。我也尝试过调试..并不是所有的都被调用

0 投票
2 回答
2753 浏览

java - 如何使用 Spring MVC 在 SimpleDateFormat 中指定自定义验证错误消息

在我的 Smpring MVC 应用程序中,我使用 SimpleDateFormat 作为 WebDataBinder 中的自定义编辑器来验证日期。当输入的日期与所需的模式不匹配时,我会在表单中收到原始错误消息:错误标签,例如:

我的问题是我想在 jsp 页面上显示自定义错误消息,例如:

"出生日期必须与 "dd/MM/yyyy" 模式匹配"

这是我的@InitBinder 的代码:

谢谢。

0 投票
2 回答
21395 浏览

spring - org.springframework.validation.BeanPropertyBindingResult 异常

嗨,我是 Spring 框架的新手。我做了一个小例子,我尝试使用 spring 验证 api 验证我的输入字段。这是代码

但是当我提交带有空白值的 from 时,它给了我以下错误

0 投票
1 回答
240 浏览

java - 使用 initBinder 忽略表单键

有人告诉我有一种方法initBinder可以忽略表单传入的一些键。

所以说我有一个带有name,accountNumber和的 POJO balance

用户发布了一个带有更新的表单accountNumberbalance但尝试篡改表单并将名称添加到帖子中。

如何使用忽略此表单中的名称键和值initBinder

编辑:我觉得我更大的问题是对initBinder实际操作缺乏了解。因此,即使帮助我了解它的作用也会有所帮助。

0 投票
1 回答
898 浏览

spring - Spring-MVC 使用转换器从路径变量加载对象,但需要返回 404 以表示未找到

TL;DR - 有没有办法在 MVC 数据绑定阶段从已注册的类型转换器中抛出错误,以便它返回带有特定 HTTP 状态代码的响应?即如果我的转换器无法从转换源中找到对象,我可以返回 404 吗?

我有一个 POJO:

并且正在使用 StringToGoofballConverter 创建一个空对象,"new".equals(id)或者尝试从数据库加载 Goofball(如果存在):

当请求与此端点匹配时,spring 使用该转换器:

这一切工作得很好,因为 GET 请求到控制器/admin/goofballs/new/admin/goofballs/1234在控制器中顺利工作以创建新对象和编辑现有对象。问题是,如果我发出一个带有虚假 id 的请求,new数据库中不存在也不存在的请求,我想返回 404。目前,转换器正在抛出一个自定义异常:

但我从Spring docs中推荐的简单 IllegalArgumentException 开始。无论哪种情况,结果都是 Spring 返回一个 HTTP 状态为 400 的响应。

这让我觉得我在滥用 Converter 接口,但@ModelAttribute docs 似乎推荐了这种方法。

那么,问题又来了:有没有办法在数据绑定阶段从已注册的类型转换器中抛出错误,以便它返回带有特定 HTTP 状态代码的响应?

0 投票
1 回答
977 浏览

spring-mvc - 冲突:带有 Hibernate Validator 的 Spring MVC - 提交/绑定操作

我有两个实体,它们是:Person 和 Address,一对一的关系。关于 JPA/Hibernate 的源代码已被删除以保持简单。

我的问题是休眠验证器。

对于Person类,我有以下内容:

地址

注意:关于 JUnit,一切正常,如果某些依赖项为空,则会创建相应的错误。

问题是当 Hibernate Validator与 Spring MVC集成时,它通过绑定的方式

关于视图代码,在 Address 类的 JSP 片段下方

要创建表单视图,让 JSP 呈现这两个对象,我有以下内容:

观察这两个 setter 是如何被调用的。

当我提交时,必须执行以下代码

遗憾的是,控制台显示有关 Address 类中的 Person 对象的错误为 null,即使在createRegisterForm中它已经相关address.setPerson(person);

我解决此问题的独特方法是禁用验证

第一个问题:如何在不禁用@NotNull验证的情况下避免这种情况?

更重要的是,如果我想保护Address 类的id :

从 JSP 文件生成的 HTML 代码是

但是当我再次提交时,我得到了

如果我正在创建一个新的 Person 并使用一个特殊的类,address.setId("5");为地址的 id 提供一个潜在的 id(例如在本例中为 5),这将是一个问题。

第二个问题:我怎样才能扭转这个问题?

0 投票
0 回答
63 浏览

java - Example to understand a possible invalid date through a CustomDateEditor with the exactDateLength option

According with the CustomDateEditor API for this constructor version:

says:

Without an "exactDateLength" specified, the "01/01/05" would get parsed to "01/01/0005".

Assuming a length of 10, 01/01/05 fails how is expected. Tested and works

But about the following:

However, even with an "exactDateLength" specified, prepended zeros in the day or month part may still allow for a shorter year part, so consider this as just one more assertion that gets you closer to the intended date format.

I don't understand the idea in a 100%. About the prepended zeros for the day or month, yes I know 0# (01-09) for a day or month. But how it could let write an invalid date yet?. Even when the exactDateLength is 10?. Because either 01/01/05 or 1/1/05 is smaller than 10

What is the exactly idea in that sentence? With an example, all would be better.

0 投票
1 回答
12022 浏览

spring - 配置两个@InitBinder 以使用相同的模型或实体,但用于不同的@RequestMappings

我有一个工作正常的控制器,它可以注册和更新一个实体,下面将如何创建表单来分别保存和更新一个实体

直到这里我没有问题。

我的问题是关于@InitBinder

我需要使用同一个实体Deportista(运动员),一种用于保存和更新的特殊设置。例如

我已阅读以下内容:

提到的链接解决了不同entities的问题,例如UserCustomer它通过@InitBinder's value属性,但我需要使用相同的实体,我如何配置@InitBinder's value以指示 Spring 使用或区分每个@InitBinder?一个分别用于保存和更新。

谢谢

编辑:从Serge Ballesta答案中,以下也是强制性的:

它让他的答案起作用: