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