首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StringTemplate-4:无法呈现expr属性

StringTemplate-4:无法呈现expr属性
EN

Stack Overflow用户
提问于 2012-10-10 09:24:41
回答 1查看 160关注 0票数 0

根据StringTemplate 4 wiki,我应该能够显示expr属性,但我不能。我正在jython中使用StringTemplate4。

下面是我的模板文件test.st:

代码语言:javascript
复制
test(persons, person) ::= <<
<table>
    <tr><th>Name</th><th>Age</th></tr>
    <tr><td>$person.name$</td><td>$person.age$</td></tr>
    $persons:{p|<tr><td>$p.name$</td><td>$p.age$</td></tr>}$
</table>

这是我的jython代码。当我尝试呈现模板时,没有显示name和age值。

代码语言:javascript
复制
>>> import org.stringtemplate.v4 as st
>>> 
>>> class Person:
...     def __init__(self, name, age):
...         self.name = name
...         self.age = age
... 
>>> group = st.STGroupDir('~/template', '$', '$')
>>> tmpl = group.getInstanceOf('test')
>>> 
>>> tmpl.add('persons', [Person('jim', 25), Person('sam', 46)])
/test()
>>> tmpl.add('person', Person('bob', 55))
/test()
>>> 
>>> print tmpl.render()
<table>
    <tr><th>Name</th><th>Age</th></tr>
    <tr><td></td><td></td></tr>
    <tr><td></td><td></td></tr><tr><td></td><td></td></tr>
</table>

在解释器中,我可以很好地访问tmpl中的属性。

代码语言:javascript
复制
>>> tmpl.attributes
{person=<__main__.Person instance at 0x54>, persons=[<__main__.Person instance at 0x55>, <__main__.Person instance at 0x56>]}
>>> p = tmpl.getAttribute('person')       
>>> print p.name, p.age
bob 55
>>> for p in tmpl.getAttribute('persons'):
...     print p.name, p.age
... 
jim 25
sam 46

你知道为什么这不管用吗?我做错了什么吗?我还尝试为Person类创建getName()和getAge()方法。如果我创建了一个数据聚合,我就能够很好地访问属性。

EN

回答 1

Stack Overflow用户

发布于 2012-10-11 01:15:18

在Java中,这是因为这些属性不是公共的。Jython如何处理对字段的访问?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12810675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档