带有ajax链接的Struts2 jquery插件网格

时间:2013-11-20 16:52:20

标签: jquery struts2 struts2-jquery

我们正在使用Struts2 jQuery插件来显示帐户摘要,如下所示

AccountNumber   Blance
87666           1,212$ 
31234           4,562$
12344           2,442$

用户可以点击帐号进入下一页。应通过Ajax加载下一个帐户摘要页面。

网格标记是:

<sjg:grid id="gridtable" dataType="json"
    href="%{url}" gridModel="gridModel" >
    <sjg:gridColumn name="accNo" title="AccountNo"
        formatter="linkBulider" />
    <sjg:gridColumn name="balance" title="Balance" />

网址必须是ajax调用,因此linkBuilder不能简单地返回

 <a href="account-summary?id"=row.accNo>

要构建网址,我们使用了如下的java脚本:

function linkBulider(cellvalue, options, row) {
    return "<a id=account"+row.accNo +" href=javascript:void(0)>" + cellvalue + "</a>";
}

这将使

<a id='account87666' href='javascript:void(0)'>87666</a>
<a id='account31234' href='javascript:void(0)'>31234</a>
<a id='account12344' href='javascript:void(0)'>12344</a>

处理这些链接是个问题! 我写下面的东西,但它不起作用

$(document).ready(function() {      
    $.struts2_jquery.bind($("a[id^='account']"), {
        "jqueryaction" : "anchor",
        "targets" : "content",
        "href" : "/show-account-summary.action" //How should I pass the account number here?!
    });
});

我的问题

  • 我不知道绑定功能是否适用于多个元素?
  • 此外,我不知道如何将帐号传递给操作。 (JavaScript的最后一行)
  • 我认为这个解决方案很奇怪,因为我的情景很直接,有没有更好的方法。可能是一些我错过的内置支持。
  • 如果我在正确的轨道上,那么请帮我点击功能。

1 个答案:

答案 0 :(得分:0)

这是答案......

首先,我们需要将以下属性添加到网格标记onGridCompleteTopics='addLinks'

然后添加addLinks事件订阅,新linkBuilder如下:

$(document).ready(function() {
    linkBulider = function(cellvalue, options, row) {
        return "<a class='accounts' account-num=" + row.accNo
                + " href=javascript:void(0)>" + cellvalue + "</a>";
    };
    $.subscribe('addLinks', function(event, data) {
        $(".accounts").click(function() {
            var acountNum = $("a.accounts").attr("account-num");
            if (acountNum != "") {
                $.ajax({
                    type : "Post",
                    url : "/account/account-summary.action",
                    data:{'accNo':acountNum},       
                    success : function(data) {
                         $('#content').html(data);
                    }
                });
            }
        });
    });

});

请注意,如果您不添加onGridCompleteTopics并尝试绑定文档上的点击,则无法使用。因为这样,链接没有准备好,$(".accounts").click将不适用于任何链接。

对于网址,您可以使用以下操作代替硬编码:

<s:url var="url"
    action="account-summary" namespace="account" />

然后在java脚本中:

url : "${url}"