beetl 压缩html 去除html空格

渔泯小镇 发布于 2013/05/11 09:48
阅读 1K+
收藏 1

@闲.大赋 你好,想跟你请教个问题:


3.12. 空格处理 beetl 无需担心额外空行!


这个天然的东西很爽啊。

<ul>
	<%for(o in list) {%>
		<li>${o.id}</li>
		<li>  ${o.name} </li>
		<li>${o.code}</li>
	<%}%>
</ul>
得出的html

<ul>
		<li>1</li>
		<li>  北京 </li>
		<li>11</li>
		<li>2</li>
		<li>  天津 </li>
		<li>12</li>
</ul>


将来能不能加上一个很酷的处理,就是在外面加个标记能把html里面的空格去掉呢。

<!-- 去除html空格, 包括标签里面内容的前后空格 -->
<%trim
<ul>
	<%for(o in list) {%>
		<li>${o.id}</li>
		<li>  ${o.name} </li>
		<li>${o.code}</li>
	<%}%>
</ul>
%>
得出的html

<ul><li>1</li><li>北京</li><li>11</li><li>2</li><li>天津</li><li>12</li></ul>

加载中
0
闲大赋
闲大赋
是为了压缩用么?可以自己写一个标签函数来完成,或者在后面几次发布中我把这个功能加上去

标签函数大概是这个样子:

<%
trim(nospace,noline){
%>
your template

<%}%>
至于如何完成标签函数,你可以看看手册,或者cacheTag的源代码

0
chenlei65368
chenlei65368
完全没必要
0
渔泯小镇
渔泯小镇

@闲.大赋  

写了一个Tag但是报错,帮看下吧。


是复制org.bee.tl.ext.DeleteTag 一样的代码

import org.bee.tl.core.Tag;

public class TrimTag extends Tag{
	public String getOutput(){
		return "";
	}	
	@Override
	public  boolean requriedInput(){
		return false;
	}
}

在ServletContextListener 中添加了如下代码 并且调试在ScriptGlobal textProcessMap中有值.

ScriptGlobal s = ScriptGlobal.defaultScriptGlobal;
		s.registerTag("trimTag", TrimTag.class);

下面是页面代码

<%
//deleteTag() {
trimTag() {
%>
<div class="list">
	<div class="abc" id="abc_24" style="width: 800px;">
		<div class="WB_info">来一个tag </div>
	</div>
</div>
<%}%>

报错>>语法错:缺少符号';',3 行 文件


请指教 谢谢。


0
闲大赋
闲大赋
groupTemplate.registerTag("trimTag", TrimTag.class);

ScriptGlobal 是内部用的,你用的不对

0
闲大赋
闲大赋
补充一下,因为你没有成功注册trimTag,所以它认为是个function,就报了缺少;这个错误
0
渔泯小镇
渔泯小镇

谢谢 @闲.大赋

OK 成功了。

以下是我的配置 jfinal + beetl

在extends JFinalConfig 中代码如下:


public void configConstant(Constants me) {
		loadPropertyFile("a_little_config.txt");			// 加载少量必要配置,随后可用getProperty(...)获取值
		me.setDevMode(true);
		me.setMainRenderFactory(new BeetlRenderFactory());
		
		// 配置自定义标签
		GroupTemplate group = BeetlRenderFactory.groupTemplate;
		group.registerTag("trimTag", TrimTag.class);
	}


0
渔泯小镇
渔泯小镇

提供一个简单处理


import org.bee.tl.core.ByteSupportTag;

public class TrimTag extends ByteSupportTag{
	
	private String trimLine(String html) {
		StringBuilder sb = new StringBuilder(html.length());
		for(String s : html.split("\n")) 
			sb.append(s.trim());
		
		return sb.toString();
	}
	
	@Override
	public String getOutput() {
		return this.trimLine(this.input);
	}

	@Override
	public byte[] getOutputAsByte() {
		String html = new String(this.inputBytes);
		return this.trimLine(html).getBytes();
	}
}





返回顶部
顶部