Tom*_*icz 5 java web-applications struts-1
当用户决定将表单中的字段留空时,Apache Struts 会将空绑定String为ActionForm. 有什么方法可以全局修改行为并选择null而不是空String?
我知道 Spring MVC 的做法完全相同,但还有StringTrimmerEditor可以注册为属性编辑器以将字符串修剪为null.
小智 4
一种可能的解决方案(允许所有 String 字段使用单个转换入口点)是注册一个自定义转换器,但不是使用 Struts 而是使用BeanUtils。
为了将请求参数映射到表单属性,Struts 使用其 RequestUtils 类的 populate 方法。这个类又使用一个BeanUtils实现来做它的工作。
一个简单的流程类似于 Struts 的RequestUtils > BeanUtils > BeanUtilsBean > ConvertUtils > ConvertUtilsBean > Converter。
有趣的是,还有一个StringConverter可以将 String 转换为...aaaaaa...String!
ConvertUtils类有一个 register方法,您可以使用它来注册转换器,覆盖现有的转换器。这意味着您可以自己编写自定义字符串转换器,该转换器对于空字符串返回 null,然后您可以等待 Struts 应用程序完全加载,这样您就不会感到意外(即确保您的转换器是最后为 type 注册的String)。
应用程序加载后,您介入并用您自己的实现覆盖默认的字符串转换器。例如,您可以使用ServletContextListenerConvertUtils.register(...)来执行此操作并在方法中调用contextInitialized。
然后,您可以在中配置侦听器web.xml,然后就可以开始了。
| 归档时间: |
|
| 查看次数: |
5252 次 |
| 最近记录: |