将 JSON 对象传递给节奏模板
Passing JSON Object to Rythm template
我有一些 Rythm 模板注册表,需要开发将呈现由客户端模板选择的代码(例如,客户端将通过 http 调用我的代码并提供模板名称和参数)。
由于调用是由 http 执行的 - 在我这边,我将客户端提供的参数作为 JSON(我什至没有 类 表示用户输入),可能会解析为 map of maps of maps...
。事实证明,在模板中使用这样的结构并不方便:我所能做的就是使用 Map::get(key)
方法并且只有 1 级嵌套:
下一个模板由于 param.get("person")
被假定为 Object
而没有 get(key)
方法而出错:
@args Map<String, Object> param
Hello @param.get("person").get("firstName").capFirst()!
我记得有些模板引擎支持 map-as-object 语法,例如将 map of maps of ... of objects
传递给模板并在模板中作为 POJO 访问它(或者像在 JS 中访问 JSON 对象的字段),例如:
@args Map param
Hello @param.person.firstName.capFirst()!
节奏可以吗?
或者也许有另一种方便的方法来解决这个问题?
通过在表达式末尾放置 @
来尝试 dynamic evaluation:
@args com.alibaba.fastjson.JSONObject param
Hello @param.person.firstName.capFirst()@!
见http://fiddle.rythmengine.org/#/editor/ed3855c628144af287571cdf9857bcaa
我有一些 Rythm 模板注册表,需要开发将呈现由客户端模板选择的代码(例如,客户端将通过 http 调用我的代码并提供模板名称和参数)。
由于调用是由 http 执行的 - 在我这边,我将客户端提供的参数作为 JSON(我什至没有 类 表示用户输入),可能会解析为 map of maps of maps...
。事实证明,在模板中使用这样的结构并不方便:我所能做的就是使用 Map::get(key)
方法并且只有 1 级嵌套:
下一个模板由于 param.get("person")
被假定为 Object
而没有 get(key)
方法而出错:
@args Map<String, Object> param
Hello @param.get("person").get("firstName").capFirst()!
我记得有些模板引擎支持 map-as-object 语法,例如将 map of maps of ... of objects
传递给模板并在模板中作为 POJO 访问它(或者像在 JS 中访问 JSON 对象的字段),例如:
@args Map param
Hello @param.person.firstName.capFirst()!
节奏可以吗?
或者也许有另一种方便的方法来解决这个问题?
通过在表达式末尾放置 @
来尝试 dynamic evaluation:
@args com.alibaba.fastjson.JSONObject param
Hello @param.person.firstName.capFirst()@!
见http://fiddle.rythmengine.org/#/editor/ed3855c628144af287571cdf9857bcaa