У меня есть две сетки jQuery struts2 на моей странице. Я должен загрузить вторую сетку по щелчку строки первой сетки. Я добавил прослушиватель событий rowselect
в первую сетку, и в этом методе я пытаюсь перезагрузить сетку.
$("#dgJobsDetailMain").jqGrid().trigger("reloadGrid");
Я также попытался запустить запрос Ajax
function populateJobRunDetails(jobName,dbSid)
{
$.ajax({
url: "ecmComparisonJobDetailDataAction?jobId="+jobName+"&selectedDbSid="+selectedDbSid+"&date="+new Date().getTime()+"&rowClicked=true",
type: "GET",
dataType: "json",
success: function(data,textStatus,jqXHR)
{
//$("#dgJobsDetailMain").jqGrid().trigger("reloadGrid");
},
error:function(jqXHR, textStatus, errorThrown)
{
alert('error');
}
});
}
моя проблема
- Метод выполнения действия получает несколько раз для каждого действия. Когда я запустил приложение в режиме отладки, я обнаружил, что метод выполнения классов действий вызывается три раза. из которых выбранные значения со страниц jsp были дважды привязаны к переменной классов действий, а в третий раз значения были нулевыми.
- И когда я запускаю событие сетки перезагрузки в
success
функции ajax, для параметров класса действия устанавливается значение null, поэтому я не могу продолжить выборку данных.
1-я сетка
<sjg:grid viewrecords="true" formIds="ecmComparisonMainForm" reloadTopics="reloadDataGrid" pagerPosition="center" onSelectRowTopics="rowselect" id="dgJobsMain" caption="Job List" dataType="json" href="%{ecmComparisonDataActionUrl}" pager="true"
gridModel="gridModel" rowList="4,6,8" rowNum="5" rownumbers="true" height="150" width="1200">
<sjg:gridColumn name="jobId" index="jobId" title="Job ID" hidden="true" />
<sjg:gridColumn name="jobName" index="jobName" title="Job" sortable="true" />
<sjg:gridColumn name="jobDescription" index="jobDescription" title="Job Description" sortable="true"/>
<sjg:gridColumn name="database" index="database" title="Database" sortable="false" />
<sjg:gridColumn name="sourceSchema" index="sourceSchema" title="Source Schema" sortable="false"/>
<sjg:gridColumn name="targetSchema" index="targetSchema" title="Target Schema" sortable="true"/>
<sjg:gridColumn name="prDescription" index="prDescription" title="PR Description" hidden="true" sortable="false"/>
<sjg:gridColumn name="createdDate" index="createdDate" title="Created Date" sortable="false"/>
<sjg:gridColumn name="createdBy" index="createdBy" title="Created By" sortable="false"/>
</sjg:grid>
Функция выбора строки
$.subscribe('rowselect', function(event, data)
{
rowClicked = true;
var grid = event.originalEvent.grid;
var sel_id = grid.jqGrid('getGridParam', 'selrow');
var jobName = grid.jqGrid('getCell', sel_id, 'jobName');
var dbSid = document.getElementById('schemaDbSid');
$("#dgJobsDetailMain").jqGrid().trigger("reloadGrid");
//populateJobRunDetails(jobName,dbSid.value);
}
);
2-я сетка
<sjg:grid pagerPosition="center" id="dgJobsDetailMain" caption="Job Details List" dataType="json" href="%{ecmJobRunDetailsActionUrl}" pager="true"
gridModel="jobsDetailGridModel" rowList="4,6,8" rowNum="5" rownumbers="true" height="150" width="1200">
<sjg:gridColumn name="runId" index="runId" title="Run" sortable="true" />
<sjg:gridColumn name="startDate" index="startDate" title="Start Time" sortable="true"/>
<sjg:gridColumn name="endDate" index="endDate" title="End Time" sortable="false" />
<sjg:gridColumn name="status" index="status" title="Run Status" sortable="false"/>
<sjg:gridColumn name="statusMsg" index="statusMsg" title="Status Details" sortable="true"/>
</sjg:grid>
Класс действия:
//Form variables/getter setters
public String execute()
{
// code to database
}
public String getJSON()
{
return execute();
}
Пожалуйста, дайте мне знать, чего не хватает.
getJSON
, когда struts2 может преобразовать ваш ответ в json для вас? - person Quincy   schedule 25.01.2013