在春季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 回答
![?](http://img1.sycdn.imooc.com/5458655200013d9802200220-100-100.jpg)
料青山看我应如是
TA贡献1772条经验 获得超8个赞
这只是部分答案,因为我还没有尝试过,但是我猜您将不得不org.springframework.expression.PropertyAccessor
基于(可能继承自)您自己的方法来实现自己的问题,而org.springframework.context.expression.MapAccessor
这并不能完全满足您的要求。您希望几乎总是为该canRead
方法返回true ,并处理该read
方法以返回您希望它返回的值(如果地图中没有值)。
然后,我认为您需要以某种方式了解Thymeleaf如何创建其SpEL上下文来注册该自定义PropertyAccessor
,我希望这是可能的,但是我没有快速浏览一下。
不过,我希望这能使您指向正确的方向。
添加回答
举报
0/150
提交
取消