Hibernate + Struts2 + Struts2-jquery (jqgrid) + freemarker を使用して webapp を実行しています。jqgrid (JSON) を作成して、ユーザーにいくつかの結果を表示し、マルチサーチを使用してデータの複雑なフィルタリングを有効にしようとしています。標準機能は問題なく動作しています。これは私のftlです:
<div id="mygridfilter">
<@sj.submit id="grid_edit_searchbutton" value="Search" onClickTopics="searchgrid" button="true"/>
<@sj.submit id="grid_edit_colsbutton" value="Show/Hide Columns" onClickTopics="showcolumns" button="true"/>
<@sj.submit id="grid_reload_button" onClickTopics="reloadItems" value="Reload" button="true"/>
</div>
<hr />
<@sjg.grid
id="gridedittable"
caption="Glycobase Users"
dataType="json"
href="json_table.action"
pager="true"
navigator="true"
navigatorSearchOptions="{multipleSearch:true,
sopt:['cn'],
reloadAfterSubmit:true,
}"
gridModel="gridModel"
reloadTopics="reloadItems"
rowList="10,15,20"
rowNum="15"
rownumbers="true"
sortname="userName"
sortorder="asc"
navigatorAdd="false"
navigatorEdit="false"
navigatorDelete="false"
navigatorView="true"
width="800"
prmNames=""
resizable="true"
altRows="true"
navigatorExtraButtons="{
seperator: {
title : 'seperator'
},
hide : {
title : 'Show/Hide',
icon: 'ui-icon-wrench',
topic: 'showcolumns'
},
alert : {
title : 'Alert',
onclick: function(){ alert('Grid Button clicked!') }
}
}"
shrinkToFit="true"
>
<@sjg.gridColumn name="userName" index="contributorName" title="Contributor Name" sortable="true"/>
<@sjg.gridColumn name="email" index="email" title="Email" sortable="true"/>
<@sjg.gridColumn name="fullName" index="fullName" title="Full Name" sortable="true"/>
</@sjg.grid>
<script>
そして上にいくつかのjavascript:
<script>
$.subscribe('showcolumns', function(event,data) {
$.struts2_jquery.require("js/plugins/grid.setcolumns.js");
$("#gridedittable").jqGrid('setColumns',{});
});
$.subscribe('searchgrid', function(event,data) {
$("#gridedittable").jqGrid('searchGrid', {
multipleSearch:true,
sopt:['cn'],
reloadAfterSubmit:true
}
);
});
</script>
これが現在の動作です。検索アイコン (または検索ボタン) をクリックすると、ダイアログ ウィンドウで列フィールドを演算子 (つまり、"name" "contains" "...") で複数検索できます。必要なのは、検索に追加のクエリを含めて、サーバー側でクエリをさらに絞り込むことです...つまり、追加の検索基準「名前の長さ」「より大きい」「...」が必要だと言います。1) 相対列がなくても、検索ドロップダウン リストに条件を追加できますか? 2) サーバーに送信された JSON.filters にクエリを追加するにはどうすればよいですか? すなわち
filters: "{"groupOp":"AND","rules":[{"field":"nameLength","op":"gt","data":"4"}]}"
サーバー側では、nameLenght のセッターとゲッターを用意し、それに応じて休止状態の基準クエリを実行して、正しい行を gridModel に返します。
何か助けはありますか?
ありがとう