FreeMarker模板引擎来渲染页⾯,使⽤了list标签循环,在页⾯
如何使⽤js代码选择。。。
在表现层使⽤FreeMarker模板引擎来渲染页⾯,使⽤了<#list>标签做循环输出。在页⾯如何使⽤js代码选择其中的某⼀⾏元素呢?
SpringMVC中,处理器controller执⾏完成后降模型和视图返回给前端控制器,然后前端控制器会请求视图解析器解析视图。当前端控制器拿到解析完成的视图后,才将视图返回给浏览器。freemarker填充数据渲染视图是在视图解析器这⾥完成的。js代码实在浏览器加载运⾏的。在js代码中:pageResult.list[index]这样的写法是不合法的,因为index是js代码中定义的变量,⽽后台在渲染视图时并没有加载js 代码。js代码是在浏览器端加载的。pageResult.list[0]这样的写法是合法的。
⽐如在页⾯是这样的:
<#list pageResult.list as item>springmvc常用标签
<td>${itempanyid!}</td>
<td>${item.dep!}</td>
<a href="javascript:void(-1);" class="edit_Btn">
编辑
</a>
</#list>
现在想使⽤js选择某⼀⾏元素,进⾏相关操作。有2种⽅法。
⽅法⼀:
⾃定义⼀个数据变量data-json,将那⼀⾏的数据转换成json字符串${item.jsonString}然后赋值给data-json,js就可以取出了⽤如下⽅式取出数据,Var data = $(this).data(“json”);
<a href="javascript:void(-1);" class="edit_Btn" data-json="${item.jsonString}">编辑</a>
js:
var data = $(this).data("json");
这种⽅法需要在实体类中添加getsonString()⽅法。
/**
* 定义getJsonString()函数,供前端data-json='${item.jsonString}'使⽤
* @return
*/
public String getJsonString()
{
Map<String, Object> map = new HashMap<String, Object>();
map.put("companyid", companyid);
map.put("dep", dep);
JSONString(map);
}
⽅法⼆:
⾃定义⼀个数据变量data-value,将那⼀⾏的数据的数组下标${item_index}然后赋值给data-value.
<a href="javascript:void(-1);" class="edit_Btn" data-value="${item_index}">编辑</a> js就可以取出了⽤如下⽅式取出数据,var index = $(this).data(“value”);
var index = $(this).data("value");
var data = dataArray[index];
在js代码加载的时候必须定义dataArray数组并赋值
<script type="text/javascript">
$(function() {
/*数据初始化*/
var dataArray =  new Array();
<#list pageResult.list as item>
var obj = new Object();
objpanyid = '${itempanyid!}';
obj.dep = '${item.dep!}';
dataArray.push(obj);
</#list>
}
</script>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。