【问题标题】:how to call a struts2 action on click of a row from jQuery grid如何在单击 jQuery 网格中的一行时调用 struts2 动作
【发布时间】:2012-11-08 11:26:24
【问题描述】:

我有一个 jsp 页面,我在 Struts2 jquery 网格中显示我的书籍详细信息。 现在我想调用一个动作并将 rowid 作为参数传递给动作类,点击我的 Jquery 网格中的一行。而且我还想在调用我的操作后指定要刷新的 div 的目标。

这些东西我通过<sj:submit target="targetDivToRefresh" formId="form2" button="true"/> 非常了解,但我不知道如何执行这些任务“当用户从我的 struts2 jquery 网格中单击一行时”。

请帮我解决这个问题。

我的jsp页面

    <sjg:grid
        id="bookgrid" 
        editurl="%{bookediturl}"
        navigator="true" 
        editinline="true" 
        navigatorSearch="false"
        autowidth="false"   
        width= "1550" 
        viewrecords="true"  
        navigatorRefresh="true"
        navigatorDelete="true">
    <sjg:gridColumn name="id" index="locationId" title="ID" formatter="integer" sortable="false" key="true" 
                       search="false"  editable="true"  hidden="true"   /> 
     <sjg:gridColumn name="authLastname" index="authLastname" title="AuthorLastname" sortable="true" search="true" editrules="{required: true}"
                        editable="true" edittype="text" />  
 </sjg:grid> 

【问题讨论】:

  • 您想构建另一个按钮来编辑行,或者您可以轻松地使用网格中的集成编辑按钮?
  • @Jaiwo99 对不起,但我的问题不是出于编辑目的。我已经通过内联或外部按钮完成了行编辑任务。请再次阅读我的问题。我想在用户单击一行时调用一个操作,并且我想在操作完成执行时指定 div 目标。我知道如何通过 struts2 表单做到这一点,但我不知道网格。使用表单我们用来调用表单并指定这样的目标 -> &lt;sj:submit target="targetDivToRefresh" formId="form2" button="true"/&gt; 。请帮我。 -谢谢你
  • 好的,我明白你了,你应该注册rowselect事件。我会为你发布示例代码

标签: struts2 struts2-jquery jqgrid


【解决方案1】:

试试这个:

$(function(){
    $.subscribe('rowselect', function(event,data) {
        alert(event.originalEvent.authLastname);
        $("#targetDivToRefresh").load('your-struts2-action');
    });
});

更新

$("#targetDivToRefresh").load('your-struts2-action');

参考链接:Struts2 jquery plugin showcase

请确保该事件将被触发,如果您单击一行,我添加了测试代码alert() 以确保它已在事件期间被调用。还有一件事,我必须告诉你,你必须使用onSelectRowTopics="rowselect"&lt;sj:grid&gt; 标签中注册你的selectrow 事件

更新

$("#targetDivToRefresh").load("<s:url value="your-struts2-action"/>"+"?id="+event.originalEvent.id);

【讨论】:

  • 请详细说明您建议的解决方案。解释为什么使用这种方法,或为您的发现提供可靠的参考。
  • @Jaiwo99 我尝试了您的新更新答案。但它仍然没有调用我的操作,只有警报会好起来。
  • @Jaiwo99 我尝试了你的新更新。在我的目标 div 中,值“your-struts2-action”正在显示。但它不是在叫我的行动课。我在我的 struts.xml 中映射了一个动作名称“test”,还编写了一个 java 类。但它仍然没有要求我采取行动。我试过这样$("#targetDivToRefresh").html('&lt;s:url value="test"/&gt;'); 即使我也试过这个-> $("#myAdvanceDivBoxx").html('&lt;s:url action="adminsetups"/&gt;'); 但没有肌动蛋白调用...请再次帮助我。
  • 好的,换一种方式试试,应该是这个样子!查看更新。这应该可以,我自己检查过
  • 现在我的行​​动正在召唤,一切正常。还有一个疑问。我想通过此操作将参数“id”传递给我的肌动蛋白类。-> `$("#targetDivToRefresh").load('your-struts2-action');` 我该怎么做?
猜你喜欢
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
相关资源
最近更新 更多