Изборът на jqGrid не е попълнен с данни от Struts2

За пореден път съм заседнал да използвам jqGridin Struts2 с struts2-jquery plugin. Този път исках да поставя поле _4 в диалоговия прозорец за търсене за колона, както беше направено в този урок тук.

Създадох и тествах действието, което трябваше да върне JSP с избраните и всички попълнени стойности вътре в него и работи добре, мисля, че проблемът се отнася изцяло до jqGrid. Може би пропускам нещо тук.

Когато отворя изскачащия прозорец за търсене и избера колоната, която искам да търся (тази с набора select), тя задейства действието, което извлича данните и след това се появява вход select, но без данни в него, изглежда, че е нула , така че имам празен select.

По-долу публикувам част от моя код:

глобална конфигурация на jqGrid:

 <sjg:grid
        id="resGrid"
        altRows="false"
        caption="%{getText('reservationTable.title')}"
        dataType="json"
        href="/bg%{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"/>

Занимавам се с това от няколко дни и направих някои проучвания, открих, че този скрипт може да бъде полезен, както в тази връзка ТУК този проблем с jqGrid се обсъжда в Github. Използвах го така:

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

Този друг отворен проблем също е свързан с тази тема: ВРЪЗКА
Видях и някои хора предлагам да използвам formatter="select"за реда, но ако съм разбрал правилно, нямам нужда от него, защото не редактирам вътрешно тази колона като написано в документацията.


АКТУАЛИЗАЦИЯ: КОНФИГУРАЦИЯ НА ДЕЙСТВИЕ Под моя <s:url>, който задейства действието, връщащо стойности и конфигурацията на действието:

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

getExecutionStatus.action където ExecutionStatus е enum:

@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;
    }
}

person JorgeGRC    schedule 11.12.2014    source източник
comment
Покажете вашия selecturl клас на действие и конфигурация.   -  person Aleksandr M    schedule 11.12.2014
comment
@AleksandrM, моля, вижте актуализирания въпрос.   -  person JorgeGRC    schedule 12.12.2014
comment
@AleksandrM някакви нови мисли? Все още се занимавам с това и нямам представа какво може да се обърка..   -  person JorgeGRC    schedule 16.12.2014
comment
Ако вашето ExecutionStatus е enum, защо се нуждаете от действие, за да го извлечете? Можете просто да го използвате в избрания маркер - stackoverflow.com/q/16063819/1700321.   -  person Aleksandr M    schedule 16.12.2014
comment
@AleksandrM, защото това е начинът, по който приставката jqgrid работи, за да попълни избрано в поле за търсене със стойностите на това enum.. Всъщност не знам друг начин да го заобиколя   -  person JorgeGRC    schedule 16.12.2014


Отговори (1)


поставете го вашата jsp страница. мисля, че работи. <%@taglib prefix="s" uri="/struts-tags"%> <%@taglib prefix="sj" uri="/struts-jquery-tags"%> <%@taglib prefix="sjg" uri="/struts-jquery-grid-tags" %>

person thataya    schedule 16.12.2014
comment
Здравейте, благодаря за отговора, но не работи :( - person JorgeGRC; 16.12.2014