Struts 2 jQuery插件isSubscribe无效

时间:2014-05-17 07:00:05

标签: java jsp struts2 struts2-jquery struts2-jquery-grid

struts 2 jQuery插件有一个内置的publish / subscribe框架。

如果您定义自己的发布和订阅事件(例如在网格上),则每次发布事件时都会调用订阅的函数。有关详细信息,请参阅(Struts 2 jQuery Subscribe is called more than once

为了防止这种情况,可以使用isSubscribed方法。

对于网格:

<sjg:grid id="gridtable" 
        onBeforeTopics="before_grid_load" >

JS将是:

$.subscribe('before_grid_load', function(event, data) {     

    if ( $('#gridtable').isSubscribed('before_grid_load') ){
      return ;    
    }
//go on with function
}

问题在于$('#gridtable').isSubscribed('before_grid_load')每次都会返回false

2 个答案:

答案 0 :(得分:2)

函数isSubscribed已应用于元素$('#gridtable'),但订阅了$(document)。我已经测试了最后一个元素,它对我没有用。但尝试了第一个元素,它的工作原理。

<强>脚本:

<head>
  <link href="<s:url value="/css/template_styles.css"/>" type="text/css" rel="stylesheet">
  <sj:head />
  <title>jQuery Grid</title>
  <script type="text/javascript">
    $(document).ready(function(){
    console.log("Before subscribe");
    $("#gridtable").subscribe("beforeTopic", function(topic, data) {
      console.log('Topic: '+data, topic);
      if ( $("#gridtable").isSubscribed("beforeTopic") ){
        console.log('Subscribed: '+data, topic);
        return;
      }
      //go on with function
      console.log('Not subscribed: '+data, topic);
    });
    console.log("After subscribe");
    });
    </script>
</head>

对于网格:

<sjg:grid id="gridtable" 
        onBeforeTopics="beforeTopic" >

答案 1 :(得分:0)

检查你的lib到你的jsp

<%@ taglib prefix="sjg" uri="/struts-jquery-grid-tags"%>

在头标记中启用jQuery Grid插件

 <sj:head jqueryui="true" jquerytheme="redmond" />