精华帖 (0) :: 良好帖 (0) :: 新手帖 (6) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-30
所以我对你“作者有10余年Java开发经验,曾在国内外著名大公司工作过”。。。这个经验非常怀疑。连这个很简单的功能你都理解不了。不再给你讲例子 你就说说你对标签结尾处的回车换行符是怎么处理的就好了? |
|
返回顶楼 | |
发表时间:2011-08-30
最后修改:2011-08-30
辛辛苦苦写个开源软件还要被质疑,哎......
|
|
返回顶楼 | |
发表时间:2011-08-30
ray_linn 写道 所以我对你“作者有10余年Java开发经验,曾在国内外著名大公司工作过”。。。这个经验非常怀疑。连这个很简单的功能你都理解不了。不再给你讲例子 你就说说你对标签结尾处的回车换行符是怎么处理的就好了? 没有标签的概念,因为采用javascript语法,所以结尾是用“}”,下面的例子(假设我们模拟jsp代码,使用<% %> ) (多个空格) <%for(user in userList){ %> (多个空格并回车) (4个空格)$user.name$ (三个空格并回车) 几个空格 <%}%> 多个空格并回车 通过Beetl渲染后,结果如下 (4个空格)javamonkey (三个空格并回车 (4个空格)ray_linn (三个空格并回车) (4个空格)other (三个空格并回车 也就是说无论标签怎么样,Beetl都会把它对文本照成的影响降到0。当然,你最好把标签格式化排号好以便于阅读,但它不会影响输出的 我用过jsp,velocity,freemarker,stringtemplate,我的印象中,他们控制标签都会对文本产生副作用。 |
|
返回顶楼 | |
发表时间:2011-08-30
最后修改:2011-08-30
....说了半天...人家的功能是让你自己来控制这些回车和空格,而不是象你的,完全是基于作者自己的假定。
如果我这么写: [空格][空格]<#if something>${something}<#endif> 按你的所谓beetl,前面的空格就消失了,如果我输出的是python语句,那怎么办? 难道非要我在if 嵌套里放空格,在语句长短的情况下,怎么保证对齐? 所以freemarker成熟度高多了。 |
|
返回顶楼 | |
发表时间:2011-08-30
ray_linn 写道 ....说了半天...人家的功能是让你自己来控制这些回车和空格,而不是象你的,完全是基于作者自己的假定。
如果我这么写: [空格][空格]<#if something>${something}<#endif> 按你的所谓beetl,前面的空格就消失了,如果我输出的是python语句,那怎么办? 难道非要我在if 嵌套里放空格,在语句长短的情况下,怎么保证对齐? 所以freemarker成熟度高多了。 没有消失啊 结果应该是 空格][空格]something, 原理很简单,如果同一行既有beetl,又有普通输出字符,那当然不会去删除空格了 我建议你可以试试beetl看看,下载lib,放到classpath里,运行helloworld后,自己在验证一下我说的 |
|
返回顶楼 | |
发表时间:2011-08-30
javamonkey 写道 ray_linn 写道 ....说了半天...人家的功能是让你自己来控制这些回车和空格,而不是象你的,完全是基于作者自己的假定。
如果我这么写: [空格][空格]<#if something>${something}<#endif> 按你的所谓beetl,前面的空格就消失了,如果我输出的是python语句,那怎么办? 难道非要我在if 嵌套里放空格,在语句长短的情况下,怎么保证对齐? 所以freemarker成熟度高多了。 没有消失啊 结果应该是 空格][空格]something, 原理很简单,如果同一行既有beetl,又有普通输出字符,那当然不会去删除空格了 我建议你可以试试beetl看看,下载lib,放到classpath里,运行helloworld后,自己在验证一下我说的 那这样呢 [空格][空格]<#if something> ${something} <#endif> 这就是freemarker考虑的地方,默认处理方法,永远不能替代意外情况。 |
|
返回顶楼 | |
发表时间:2011-08-31
囧... 用惯slim了一看你们的各种模版EL就头疼...
to ls某位, 生成json明显不是用模版拼而是用Gson吧 ? ... |
|
返回顶楼 | |
发表时间:2011-08-31
回复ray_linn:
我刚写的一个例子, import java.io.IOException; import org.bee.tl.core.BeeTemplate; public class TestCR { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BeeTemplate template = new BeeTemplate(" <%if(a==1){%>\n hello<%}%>"); template.set("a", 1); template.setStatementStart("<%"); template.setStatementEnd("%>"); System.out.println(template.getTextAsString()); } } 输出是 hello 应该就是你想要的样子吧? 还是建议你下载一个看看。语法比freemarker好学多了,就是javascript语法。没有什么特别的 |
|
返回顶楼 | |
发表时间:2011-09-04
最后修改:2011-09-04
仔细对比了一下freemarker,确实有几个算是重要的功能在0.6版本里没有,现在加上了
|
|
返回顶楼 | |
发表时间:2011-09-13
每周一贴,主要是周末才有时间改进代码
主要修改是将是否严格MVC控制放在语法解析阶段了,如原来计算表达式是 aexpr : mexpr ((ADD^|=MINUS^) mexpr)* ; 改成: aexpr : mexpr ((a=ADD^|a=MINUS^) mexpr {if(isStrictMVC) throw new MVCStrictException($a);})* ; 有助于提升运行性能 |
|
返回顶楼 | |