jqGrid选择未填充Struts2中的数据

时间:2014-12-11 11:05:25

标签: jquery struts2 jqgrid struts2-jquery

我再一次使用jqGrid Struts2struts2-jquery plugin。这次我想在列的搜索对话框中添加<select/>字段,如本教程中所述here.

我构建并测试了应该返回JSP的动作,其中包含select和所有填充值,并且它工作正常,我认为该问题与jqGrid完全相关。也许我在这里忽略了一些东西。

当我打开搜索弹出窗口并选择我要搜索的列(具有select设置的列)时,它会触发检索数据的操作,然后会出现select输入但是如果里面没有数据,它似乎为空,所以我有一个空的select

下面我发布了一些代码:

jqGrid全局配置:

 <sjg:grid
        id="resGrid"
        altRows="false"
        caption="%{getText('reservationTable.title')}"
        dataType="json"
        href="%{remoteurl}"
        editurl="%{deleteUrl}"
        pager="true"
        gridModel="gridModel"
        rowList="10,15,30"
        rowNum="15"
        navigator="true"
        navigatorSearch="true"
        autowidth="true"
        navigatorAdd="false"
        onDblClickRowTopics="rowSelect"
        navigatorEdit="false"
        navigatorDelete="false"
        navigatorSearchOptions="{
                multipleSearch: true, 
                closeAfterSearch: true,
                afterRedraw: afterRedraw
        }"
        navigatorExtraButtons="{
                photos : { 
                        title : '%{getText('reservationTable.icon.photo')}', 
                        icon: 'ui-icon-image', 
                        onclick: showPhotos,
                        position: 'first'
                }
        }"
        >

jqGrid列配置:

<sjg:gridColumn name="execution" 
index="execution" 
title="%{getText('execution')}" 
formatter="execution" 
search="true" 
searchtype="select" 
searchoptions="{ sopt:['eq'], 
                 dataUrl:'%{selecturl}', 
                 value: ':All;'}"/>

检索数据的结果(从我上面链接的教程复制,这很好用):

<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page contentType="text/html; charset=UTF-8" %>
<s:select list="executionStrValues" theme="simple" emptyOption="true"/>

我已经坚持了几天而且我做了一些研究,我发现这个脚本可能很有用,因为在这个链接HERE这个问题与jqGrid讨论在Github上。我这样用过:

 <script type="text/javascript">
(function() {
    $.jgrid = {
            defaults : {
                ajaxSelectOptions: 'GET',
                async: false
            }
        }
})();
</script> 

这个其他未解决的问题也与这个话题有关:LINK
我还看到有些人建议使用formatter="select"作为行,但如果我理解正确,我就不需要它,因为我没有将此列内联编辑为written in the documentation.


更新:操作配置 在我的<s:url>下方触发操作返回值和操作的配置:

<s:url var="selecturl" action="getExecutionStatus" />

getExecutionStatus.action 其中ExecutionStatus是枚举:

@ResultPath(value = "/")
public class UtilsAction extends ActionSupport {

    private static final long serialVersionUID = 3672057774005126256L;
    private List<String> executionStrValues;

    @Action(value="getExecutionStatus", results={
            @Result(name="success",location="jsp/selectExecution.jsp"),
            @Result(name="input", location="jsp/error.jsp"),
            @Result(name="login", location="index.jsp")
            })
    public String getExecutionValues(){

        List<ExecutionStatus> executionValues = Arrays.asList(ExecutionStatus.values());
        executionStrValues = new ArrayList<String>();

        for(ExecutionStatus ex: executionValues)
            executionStrValues.add(getText("executionStatus."+ex.toString()));


        return SUCCESS;

    }//getExecutionValues

    public List<String> getExecutionStrValues() {
        return executionStrValues;
    }

    public void setExecutionStrValues(List<String> executionStrValues) {
        this.executionStrValues = executionStrValues;
    }

    public static long getSerialversionuid() {
        return serialVersionUID;
    }
}

1 个答案:

答案 0 :(得分:0)

把你的jsp页面。我觉得它有效。 <%@taglib prefix="s" uri="/struts-tags"%> <%@taglib prefix="sj" uri="/struts-jquery-tags"%> <%@taglib prefix="sjg" uri="/struts-jquery-grid-tags" %>