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>

    <td>${item.companyid!}</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);
        return JSON.toJSONString(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();
             obj.companyid = '${item.companyid!}';
             obj.dep = '${item.dep!}';
             dataArray.push(obj);
           </#list>

}
</script>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章