2.11. 引用属性

属性引用是模板中的重要一部分,beetl支持属性同javascript的支持方式一样,如下

  • Beetl支持通过”.”号来访问对象的的属性,如果javascript一样。如果User对象有个getName()方法,那么在模板中,可以通过${xxx.name}来访问
  • 如果模板变量是数组或者List类,这可以通过[] 来访问,如${userList[0]}
  • 如果模板变量是Map类,这可以通过[]来访问,如${map[“name”]},如果key值是字符串类型,也可以使用${map.name}.但不建议这么使用,因为会让模板阅读者误以为是一个Pojo对象
  • Beetl也支持Generic Get方式,即如果对象有一个public Object get(String key)方法,可以通过”.”号或者[]来访问,譬如 ${activityRecord.name}或者${activityRecord[“name”] }都将调用activityRecord的 get(String key)方法。如果对象既有具体属性,又有Generic get(这种模型设计方式是不值得鼓励),则以具体属性优先级高.
  • Beetl也可以通过[]来引用属性,如${user[“name”]} 相当于${user.name}.这跟javascript保持一致。但建议不这么做,因为容易让阅读模板的人误认为这是一个Map类型
  • Beetl 还可以定义额外的对象属性,而无需更改java对象,这叫着虚拟属性,如,对于所有集合,数组,都有共同的虚拟属性size.虚拟属性是“.~”+虚拟属性名
  1. template.binding("list",service.getUserList());
  2. template.binding("pageMap",service.getPage());
  3. //在模板里
  4. 总共 ${list.~size}
  5. <%
  6. for(user in list){
  7. %>
  8. hello,${user.name};
  9. <% } %>
  10. 当前页${pageMap['page']},总共${pageMap["total"]}