【问题标题】:How to reload sj:tab in struts2-jquery 3.3.3?如何在 struts2-jquery 3.3.3 中重新加载 sj:tab?
【发布时间】:2017-07-05 14:38:10
【问题描述】:

我需要在 struts2-jquery 3.3.3 中重新加载一个 sj:tab,到目前为止我尝试过:

  • 在 sj:tab 中添加一个listenTopic,没有工作,因为我读到它还没有 在该版本中实现
  • 在任何情况下,重新加载选项卡,如:

$('#myPanel').tabs("load", "#myTab");

它可以工作并重新加载,但是绑定了更多事件处理程序,当我通过 sj:submit 提交时,它提交了两次,我尝试在重新加载之前使用 jquery 删除所有事件处理程序,但我没有任何区别。所以事件处理程序呈指数增长:

> $('#myPanel').tabs("load", "#myTab");  
1 event handler per button 
> $('#myPanel').tabs("load", "#myTab");
2 
> $('#myPanel').tabs("load", "#myTab"); 
4 .. 16 .. 32

如何杀死 sj:submit 中的所有事件处理程序?

【问题讨论】:

  • 您好,我认为您的问题应该重新编辑以便回答。提供更多细节,谢谢!
  • 简而言之,人们如何在 sj:tabbedpanel 中重新加载选项卡?
  • 你重载的内容是不是每次都注入ajax?
  • 不,我有多个 sj:submit,成功后我用 $('#myPanel').tabs("load", "#myTab"); 重新加载选项卡,但这会加载当前标签的新事件而不丢弃旧的

标签: jquery-ui struts2-jquery


【解决方案1】:

这可能对我来说是一种难闻的气味,因为我需要在应用程序中的新“状态”上更改选项卡,所以我认为这是个好主意:

( ajax call fired by a sj:submit --> POST )
# in the server check if the state changed, if so returns success and the client asks to reload.

$.subscribe("change_state"){
  ...
  $('#myPanel').tabs("load", "#myTab");
  # (http GET new tab)
};

标签加载顺利,但为了防止旧事件触发,我必须为每个按钮设置变量

$.subscribe("change_state", function(event){
  if (!reloaded){
     $('#myPanel').tabs("load", "#myTab");
     reloaded = 1;
  }
)};
$.document.ready(function(){
    reloaded = null;
});

如果有人对此版本的 struts 有正确的设计,我很乐意提供 100 赏金

【讨论】:

    猜你喜欢
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 2014-02-04
    • 2015-09-10
    • 2017-12-02
    • 1970-01-01
    相关资源
    最近更新 更多