0

選択用の次のソースコードがあります。

<select id="_conteneurNum_id" name="conteneurNum" data-dojo-type="dijit.form.FilteringSelect">
<option selected="selected" value="">Tous</option>
<option value="1">951</option>
<option value="2">753</option>
<option value="3">753159</option>
</select>

次のようにレンダリングされます。

フォームフィールドのレンダリング

selected属性が Dojo/Dijit/SpringJS によって無視されているようです(ユーザーには最初に"Tous"ではなく白いラベルが表示されることに注意してください。

誰でも助けてもらえますか?

4

2 に答える 2

1

コンソールにエラーはありますか?

私はあなたのコードであなたが望むことを正確に行うフィドルを持っています:

http://jsfiddle.net/cswing/eJP3U/

于 2012-07-31T11:30:57.400 に答える
1

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>
于 2014-08-17T12:38:14.917 に答える