0

看来,如果我为我提供给 stringtemplate 的类提供 ModelAdaptor,那么我必须响应我希望在模板中访问的每个属性。我希望能够为不遵循正常命名约定的属性实现 getProperty,但让默认行为处理“正常”属性。是否有一个我可以子类化以获得正常行为的类(也许只是调用 super() 当它不是我已经实现的属性,或者我可以调用的方法来获取默认的字符串模板逻辑)?

也就是说,我只想处理适配器中的特殊属性。

4

1 回答 1

0

您可以扩展ObjectModelAdaptor类。

覆盖该getProperty方法以包含try/catch块,并在catch块中使用您的自定义处理STNoSuchPropertyException

public class MyModelAdaptor extends ObjectModelAdaptor {
  @Override
  public Object getProperty(Interpreter interp, ST self, Object o, Object property, String propertyName) {
    try {
      return super.getProperty(interp, self, o, property, propertyName);
    } catch (STNoSuchPropertyException ex) {
      throw new STNoSuchPropertyException("TODO: custom handling goes here");
    }
  }
}
于 2014-01-30T22:54:00.190 回答