MyEclipse 2014、Spring 3.1、古い Dojo/Dijit バージョンと数時間格闘した後、回避策を見つけました。これが古いことはわかっていますが、MyEclipse にはこれらの古いバージョンのすべてが含まれています。
FilteringSelect、null 値での選択、値での html オプション、およびプロジェクトの残りの部分を台無しにする dojo ライブラリの置き換えを試みました。だから、誰かを助けることができれば、これをここに投稿します:
このケースは、'-- Select item --' のような null 値を持つダミーのプロンプト オプションが必要な場合によく見られます。MyEclipse で spring-js-2.3.1.RELEASE にパックされた Dojo/dijit バージョンは、オプションを null 値に置き換え、ドロップダウン リストに表示されるセパレーターを使用します。Dojo/Dijit の最後のいくつかのバージョンでは、Craig Swing のフィドルでわかるように、この動作は修正されているようです。
バインドするプロパティが文字列でない場合は、null の代わりにダミー オプションの値として単一のエスケープを割り当てることができます。これは、後でコントローラーで null としてバインドされるため、ダミー オプションが表示されるためです。元:
<option selected="selected" value="">Tous</option>
ただし、プロパティが文字列の場合、このようにして、コントローラーのプロパティに不要な空白が見つかります。
そこで、最終的に Select.js を直接変更することにしました
プロジェクトの webapps/resources/dijit/form/Select.js に配置します。次の行にコメントを付けます。
/*
if(!_1.value){
return new dijit.MenuSeparator();
}else{
*/
var _2=dojo.hitch(this,"_setValueAttr",_1);
var _3=new dijit.MenuItem({option:_1,label:_1.label,onClick:_2,disabled:_1.disabled||false});
dijit.setWaiRole(_3.focusNode,"listitem");
return _3;
/*
}
*/
また、web.xml で Resource Servlet のこのパスをオーバーライドすることを忘れないでください。
<servlet-mapping>
<servlet-name>My Servlet</servlet-name>
<url-pattern>/resources/dijit/form/Select.js</url-pattern>
</servlet-mapping>