为了账号安全,请及时绑定邮箱和手机立即绑定

带有点符号的Thymeleaf 3地图访问

带有点符号的Thymeleaf 3地图访问

天涯尽头无女友 2021-05-01 06:02:26
在春季4.3.x环境中将thymeleaf从2.x更新到3.x时,我遇到的问题是org.thymeleaf.context.VariablesMap类已被删除。我正在使用以下模型结构public interface Model extends Map<String, Object>, Serializable {...} public class BaseModel extends VariablesMap<String, Object> implements Model {...}VariablesMap实现了一个OGNL MapPropertyAccessor,无论是否存在键AlternativeLanguages,该OGNL MapPropertyAccessor都可以使用点符号来访问模型。${meta.alternativeLanguages}现在使用thymeleaf 3,spring集成仅使用SpringEL,并且当key AlternativeLanguages不存在时,SpringEL MapAccessor会引发异常Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 28): Property or field 'alternativeLanguages' cannot be found on object of type 'd.v.BaseModel' - maybe not public?有没有一种方法可以避免将所有模板迁移到${meta['alternativeLanguages']}
查看完整描述

2 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

这只是部分答案,因为我还没有尝试过,但是我猜您将不得不org.springframework.expression.PropertyAccessor基于(可能继承自)您自己的方法来实现自己的问题,而org.springframework.context.expression.MapAccessor这并不能完全满足您的要求。您希望几乎总是为该canRead方法返回true ,并处理该read方法以返回您希望它返回的值(如果地图中没有值)。

然后,我认为您需要以某种方式了解Thymeleaf如何创建其SpEL上下文来注册该自定义PropertyAccessor,我希望这是可能的,但是我没有快速浏览一下。

不过,我希望这能使您指向正确的方向。


查看完整回答
反对 回复 2021-05-12
  • 2 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信