0

StringTemplate 4 wikiによると、 expr プロパティを表示できるはずですが、表示できません。jythonでStringTemplate4を使用しています。

テンプレート ファイル test.st は次のとおりです。

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コードです。テンプレートをレンダリングしようとすると、名前と年齢の値が表示されません。

>>> 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 の属性に問題なくアクセスできます。

>>> 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() メソッドを作成しようとしましたが、うまくいきませんでした。データ集約を作成すると、プロパティに問題なくアクセスできます。

4

1 に答える 1

0

Java では、これらのプロパティが公開されていないためです。Jython はフィールドへのアクセスをどのように処理しますか?

于 2012-10-10T17:15:17.843 に答える