velocity参数重新赋值_velocity 中 parse嵌套赋值问题

我有3个模板 main.vm , sub1.vm ,sub2.vm

其中main.vm中嵌套了sub1.vm和sub2.vm。当前我有一个需求,这三个模板都需要用到参数id,id的具体值根据模板名称获取。

这样我就需要在解析到#parse("sub1.vm") 和#parse("sub2.vm")  时分别赋值。但我现在碰到一个问题,如果sub1.vm中又存在一个嵌套,我就无法处理了,请高手帮我解决一下。

BufferedReader bf = new BufferedReader(new InputStreamReader(

new FileInputStream("./src/example.vm"), "UTF-8"));

String aline = bf.readLine();

while (aline != null) {

...//其他逻辑处理

content += aline;

aline = bf.readLine();

}

evaluate(context, writer, "", new StringReader(content));

public static boolean evaluate(org.apache.velocity.context.Context context, Writer writer, String logTag, Reader reader) throws ParseErrorException, MethodInvocationException, ResourceNotFoundException, IOException {

SimpleNode nodeTree = null;

try {

nodeTree = RuntimeSingleton.parse(reader, logTag, false);

} catch (ParseException pex) {

throw new ParseErrorException(pex.getMessage());

}

if (nodeTree != null) {

InternalContextAdapterImpl ica = new InternalContextAdapterImpl(context);

ica.pushCurrentTemplateName(logTag);

nodeTree.init(ica, RuntimeSingleton.getRuntimeServices());

//输出

int i, k = nodeTree.jjtGetNumChildren();

for (i = 0; i < k; i++){

SimpleNode node =(SimpleNode)nodeTree.jjtGetChild(i);

Token t = node.getFirstToken();

if(t.image.indexOf("#parse")>=0){

// 为id赋值

ica.put("this", i);

}

nodeTree.jjtGetChild(i).render(ica, writer);

}

return true;

}

return false;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值