Tapestry是否存在通用属性可将服务端返回的null字符串在客户端转为空字符串?
Tapestry 5 TextField null值空指针问题解决方案
不需要自行从零开发针对null值的新translator,Tapestry 5原生提供了两种开箱即用的配置方案,完全可以满足你的需求:
全局生效配置
适用于所有字符串类型字段统一处理的场景:
- 找到应用的模块配置类,通常为
AppModule.java - 在
contributeApplicationDefaults方法中添加如下配置:
configuration.add(*SymbolConstants.EMPTY_STRING_ON_NULL_FOR_STRING_PROPERTIES*, "true");
开启该配置后,框架会自动完成双向转换:
- 渲染组件时:服务端的null字符串自动转为空字符串输出到前端,不会触发空指针
- 表单提交时:前端传入的空字符串自动转为null回写到服务端属性,不需要修改DB存储逻辑
单组件局部配置
如果只需要给特定TextField做null值处理,不需要全局生效,直接在组件声明时添加t:nulls参数即可:
<t:textfield t:id="desc" t:value="product.description" t:nulls="empty"/>
自定义Translator(非必要不推荐)
如果以上两种配置都不符合你的特殊业务规则,再考虑自定义translator:
- 继承
org.apache.tapestry5.internal.translator.StringTranslator类,重写toClient方法将null转为空串,重写toServer方法将空串转为null - 在
AppModule的contributeTranslatorSource方法中注册自定义的translator,覆盖默认的string类型转换器即可
内容的提问来源于stack exchange,提问作者user710818
相关产品推荐
相关产品推荐

