问题标签 [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.
java - 表单和属性编辑器中的预选选项
我在一个 web 应用程序中使用 Spring,使用表单,现在它工作正常,但我想改变一件事,那就是我得到一个错误的时候。我有一个带有两个文本字段和一个选择选项字段的小表单,正是这个选择字段导致了错误。选择选项是从数据库中填充的。
我的代码:edit.jsp
控制器.java
我的编辑器.java
当我编辑一个已经存在的帖子时,我希望在表单中预先选择父母,这是我无法开始工作的事情。
有谁能帮助我吗?非常感谢您的时间,我希望我能有所作为。谢谢你。
*编辑*** 我现在已将我的编辑器更改为格式化程序,但没有运气:
但是当我编辑对象时,我仍然没有在我的下拉列表中获得现有值。我在编辑对象上的打印输出:
我究竟做错了什么?!?(我想稍后添加一个验证器,这就是从编辑器更改为格式化程序的原因)
java - onBind() 的 Spring MVC 3 Controller 注释 - 如何?
我正在从 Spring 2.5 升级到 Spring 3.2。我有一个以前扩展的 MVC 控制器CancellableFormController
。它分别声明initBinder()
和onBind()
方法。我已将 Controller 重构为使用@Controller
注释,并将覆盖的initBinder()
方法切换为使用 Spring MVC 3 注释@initBinder
。
我的具体问题是,在 Spring MVC 3 中,从 Spring 2.5 升级,如何重构被覆盖的onBind()
方法以使用等效的注解?现有方法的签名是:
我考虑过使用@initBinder()
并将之前的代码onBind()
放在这个带注释的方法中。但我的困惑是:
- 这样做,会不会像以前一样在整个框架过程中同时调用代码?
- 如何从带
@initBinder
注释的方法中获取 Command 对象的句柄。
我可以将它声明为方法签名中的另一个参数,Spring MVC 框架将确保我得到一个副本吗?似乎在旧onBind()
方法中已经(通过formBackingObject
方法)创建了 Command 对象。我可以安全地假设使用@initBinder
方法时也是如此吗?
谢谢大家的一些见解。我正在尝试跟上 Spring MVC 流程的速度!
我现有的@initBinder
方法签名是这样的:
我希望我可以做类似的事情:
这是使用注释升级cancellableformcontroller onBind() 方法的标准最佳实践方法吗?
根据标记为正确的答案进行尝试,但仍然无法正常工作:
解决方法
请参阅下面我对 zeroflag 的评论。创建一个与 onBind() 中包含的逻辑相同的私有方法,然后在 onSubmit() 注释方法 (POST / GET) 中验证命令对象后,调用现已失效的 onBind() 方法,将您的命令对象作为范围。类似于以下内容:
对于我的特定情况,这似乎是一个丑陋的解决方法。
java - SpringMVC 使用页面重定向返回验证错误
我有一个从 init binder.setValidatior() 得到验证的表单。但是,我有一个控制器方法,一旦完成,验证函数的错误不会绑定到表单上的错误元素。我怎样才能让错误绑定并仍然使用重定向。
需要重定向,因为 url 包含重建页面所需的数据。控制器功能是:
控制器
如果我这样做return new ModelAndView("monitoringList");
了,那么页面中的信息就会丢失。
java - SpringMVC initbinder - 从 Integer 绑定列表项
我有一个包含自定义项目列表的页面,我在控制器的初始化活页夹中注册了一个自定义编辑器以允许数据绑定。该列表从视图传递。我遇到的问题是我在一个绑定到不同对象的视图上。但是,这两个对象在共同的 crimeRecNo 中都有一个属性。
当数据从视图传递到自定义对象列表的控制器时,我创建了一个活页夹函数,但是我想创建一个接收整数并返回列表的活页夹。下面是我迄今为止所拥有的一个例子,但它没有约束力:
我需要知道如何注册一个接受 Integer crimeRecNo 并返回列表并将其绑定到列表的自定义编辑器。
活页夹功能
这只是没有约束力
错误
spring - Spring MVC Hibernate Validator TypeMismatch 异常
我正在使用带有 Hibernate 验证器 4.2.0 的 Spring MVC。在 /WEB-INF/classes/ValidationMessages.properties 中的类路径上有一个 ValidationMessages.properties:
这在 javaconfig 中作为 bean 提供:
从类路径加载 ValidationMessages.properties 很好。我的控制器:
还有一个自定义验证器:
使用我的 CustomValidator 进行验证工作正常(我手动插入错误消息,而不是使用消息源),但是对于绑定 typeMismatch 错误,我得到了异常:
而不是来自 ValidationMessages.properties 的代码,所以看起来 DataBinder (?) 没有使用我的 messageSource。我想要我的属性文件中的 typeMismatch 代码而不是异常消息。我也尝试过使用 ResourceBundleMessageSource 而不是 ReloadableResourceBundleMessageSource 但这没有任何区别。有任何想法吗?
java - 未调用 initBinder 方法进行从 String 到 Enum 的转换
我正在测试@InitBinder
注释,以便在 Web 请求期间将String
对象转换为适当的对象。Enum
我创建了以下简单的Enum
:
示例枚举.java
然后,我创建了一个编辑器PropertyEditorSupport
,可以从@InitBinder
代码中调用:
枚举属性编辑器.java
然后,在我的控制器中,我添加了@InitBinder
一个简单的请求映射:
控制器
据我了解,对此控制器方法的请求应尝试将字符串值转换为SampleEnum
对象。但是,无论是initBinder
请求映射方法还是EnumPropertyEditor
.
我正在 FireFox 中使用 RESTClient 进行测试,并尝试发送请求正文“三”,我希望它可以工作。相反,无论请求正文中的内容如何,我都会收到 415 错误。(服务器拒绝了这个请求,因为请求实体的格式不受请求的方法 () 的请求资源支持。)
如果我将请求映射更改为接受字符串而不是 a SampleEnum
,postSampleEnum
则会调用并且不使用自定义编辑器(如预期的那样)。
我是否遗漏了任何允许调用自定义编辑器代码的内容?继续调试的最佳方法是什么?
spring - 即使在注册自定义属性编辑器后也无法绑定复选框
我有以下注册团队的步骤序列:
- 选择球队 - 这将显示该球队的球员列表作为复选框(下面的 JSP 页面)
- 用户可以选择显示的一个或多个播放器
newdTeam
应该调用请求处理程序方法来设置上面第 2 步中选择的播放器。处理程序正在被调用,但players
即使我在步骤 2 中选择了玩家,该集合也是空的。不确定问题出在哪里。
我没有看到调用属性编辑器。任何帮助表示赞赏。
团队
播放器
控制器
玩家属性编辑器
JSP
spring-mvc - Spring MVC 3:CustomDateEditor 工作但存在验证错误(BindingResult)
当我在结果网页中提交带有空日期的表单时显示验证错误时遇到问题:
我的控制器如下所示:
当我调试我的方法时,我可以看到我的对象很好,我所做的修改很好,日期为空,但 bindingResult.hasErrors() 返回 true,据我说它不应该。
我曾经在 Program 对象和 @Valid 注释中有一些验证注释,但我将它们全部删除,但仍然存在问题。
我读过很多类似的问题,每次解决方案都是@InitBinder/CustomDateEditor。所以它就在那里,我想它正在工作,日期以我想要的方式显示(在我添加它之前不是这种情况),如果它不为空,我可以提交它们。
先谢谢了,我开始发疯了...
java - 扩展 Spring Framework (Java) Servlet
我正在开发一个使用 Spring Framework (MVC) 的 Java Web 应用程序。我所有的代码都在由 servlet 实例化的控制器文件中。我想扩展 servlet,以便我可以在 servlet 中运行一些代码init
;但是,总的来说,我对 Spring 框架和 Java Web 开发非常陌生。我不确定如何扩展 servlet,将派生的 servlet 放在哪里等。有人可以指出我正确的方向吗?
spring - 如何定义多个initBinders
单个控制器中是否可以有多个 initBinder 方法?每个 InitBinder()(见代码)依赖于一个唯一的请求处理程序,例如 initBinder() 在 url:"/update/account" 上调用,而 initBinderOne() 在 "update/account/pass" 上调用?
我宁愿为所有更新使用一个控制器,而不是多个。请指教。