Scala Play框架map遍历时引入模板文件被输出为纯文本问题
Scala Play Twirl模板调用子视图输出纯文本问题修复
问题原因
Twirl是Play框架默认的模板引擎,对动态代码块有固定解析规则:你当前代码中包裹map遍历逻辑的大括号未被引擎识别为动态代码块起始,块内的@cards(profile)不会触发模板解析,因此被直接作为普通文本输出。
可行写法
优先选择第一种官方推荐写法,可规避绝大多数Twirl块解析异常:
- 用Twirl原生
@for语法实现遍历
这是模板标准遍历写法,引擎可自动识别块内的HTML标签、子视图调用,不需要额外标记边界,可读性更强:
@for(profile <- profilesvm.profiles) { <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12"> @cards(profile) </div> }
- 保留map写法的实现
如果必须用map实现遍历,需要用@{}显式包裹整个动态逻辑块,明确告知Twirl引擎这部分代码需要解析执行,块内内容会被正常渲染:
@{ profilesvm.profiles.map { profile => <div class="col-lg-3 col-md-4 col-sm-6 col-xs-12"> @cards(profile) </div> } }
前置检查
确保当前模板顶部已经正确引入cards子视图,否则语法正确也会触发编译错误。
内容的提问来源于stack exchange,提问作者user1899829
相关产品推荐
相关产品推荐

