【问题标题】:how to load json result on grid after struts2 form submissionstruts2表单提交后如何在网格上加载json结果
【发布时间】:2023-03-04 03:36:01
【问题描述】:

我有一个显示页面加载数据的网格,还有一个在提交时从 datepicker 获取变量并最终调用操作的表单。我希望新的 json 结果加载到上面的网格上,但我不是在空白页上得到 json 对象元素 ({"JSON":"SUCCESS","endDate":"28/03/2012","listOfLogs":[{"date":"27-03-2012"...等)

这是我的代码:

<s:url id="getCurrentDateLogs" action="getCurrentDateLogs"/>

<sjg:grid
    id="getLogs"
    dataType="json"
    href="%{getCurrentDateLogs}"
    gridModel="listOfLogs"
    onSelectRowTopics="rowselect"
    loadonce="true"  
    >
    <sjg:gridColumn name="userid" index="userid" title="User ID" sortable="true" align="center"/>
    <sjg:gridColumn name="username" index="username" title="Username" sortable="true"/>
    <sjg:gridColumn name="logaction" index="logaction" width="600" title="Action" sortable="true"/>
    <sjg:gridColumn name="date" index="date" title="Date" sortable="true" sorttype="date" align="center"/>
    <sjg:gridColumn name="time" index="time" title="Time" sortable="true" sorttype="time" align="center"/>     
</sjg:grid>

<s:form action="getLogsByDates" id="form2"  theme="simple" cssClass="yform">
    <table class="">
        <tr><td>from:</td>
            <td><sj:datepicker value="yesterday" id="from" name="startDate" displayFormat="dd/mm/yy" label="from" /></td>
        </tr>
        <tr><td>to:</td> 
            <td><sj:datepicker value="today" id="to" name="endDate" displayFormat="dd/mm/yy" label="to" /></td>
        </tr>
        <tr><td colspan="2">
        <sj:submit
            value="Search" 
            button="true"
            indicator="indicator"
            />
        </td></tr>
    </table>
</s:form>

我正在使用以下库: struts2 2.3.1.2 struts2-jquery 3.3.0 struts2-jquery-grid-plugin 3.3.0

有什么建议吗? 谢谢!

【问题讨论】:

    标签: java jquery struts2 jqgrid


    【解决方案1】:

    首先,您应该在 sjg:grid 标记上指定表单 ID 和重新加载网格值的主题。如果您这样做,它会提交表单内的值并重新加载网格。这意味着您在操作 getCurrentDateLogs 上的 execute() 方法应该返回 JSON。或者,您可以将 getLogsByDates 操作上的 execute() 方法移至 getCurrentDateLogs 上的另一个方法。

    应该是这样的:

    public class GetCurrentDateLogs extends ActionSupport
    {
    
         public execute()
         {
             return INPUT;
         }
    
         public String getLogsByDates()
         {
            //Your code, sets listOfLogs, page, total etc...
            return JSON;
         }
    }
    

    在你的 JSP 中:

    <s:url id="getCurrentDateLogs" action=GetCurrentDateLogs" method="getLogsByDates"/>
    
        <sjg:grid
            id="getLogs"
            formIds="form2"
            reloadTopics="reloadMyGrid"
    

    您应该将&lt;sj:submit&gt; 更改为&lt;sj:a&gt; 标签,并将按钮属性设置为true。它可能适用于&lt;sj:submit&gt; 标签,但我从未尝试过。

    最后,按钮应该改为:

    <sj:a button="true" buttonIcon="yourIcon" onClickTopics="reloadMyGrid">Search</sj:a>
    

    希望这会有所帮助。

    【讨论】:

    • 我试过但还是不行,我的代码在stackoverflow.com/questions/14466984/…
    • 你做的完全一样吗?正如我在另一篇文章中看到的那样,另一个人告诉你使用 onClickTopics 而不是我告诉你这样做的 onSuccessTopics
    【解决方案2】:

    至少,您的 sj:submit 应该设置属性 targets="getLogs"。不过,您可能还缺少其他东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 1970-01-01
      • 2017-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多