Я снова застрял, используя jqGrid
in Struts2
с struts2-jquery plugin
. На этот раз я хотел поместить <select/>
поле в диалоговое окно поиска для столбца, как это сделано в этом руководстве здесь
Я построил и протестировал действие, которое должно возвращать JSP с выбором и всеми заполненными значениями внутри него, и оно работает нормально, я думаю, что проблема полностью связана с 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"/>
Я застрял с этим на пару дней, и я провел некоторое исследование, я обнаружил, что этот скрипт может быть полезен, как в этой ссылке ЗДЕСЬ эта проблема с 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
— это перечисление:
@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;
}
}
selecturl
и конфигурацию. - person Aleksandr M   schedule 11.12.2014ExecutionStatus
является перечислением, зачем вам нужно действие для его извлечения? Вы можете просто использовать его в теге select - stackoverflow.com/q/16063819/1700321. - person Aleksandr M   schedule 16.12.2014