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>

渲染如下:

表单域的渲染

似乎 Dojo/Dijit/SpringJS 忽略了selected属性(请注意,首先向用户显示的是白色标签而不是"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、使用空值选择、使用值的 html 选项,并替换了弄乱项目其余部分的 dojo 库。所以如果它可以帮助任何人,我会在这里发布:

如果您想在选择中使用虚拟提示选项,例如“-- 选择项目--”,则这种情况很常见,并且值为空。Dojo/dijit 版本与 MyEclipse 一起打包到 spring-js-2.3.1.RELEASE 中,用下拉列表中显示的分隔符将选项替换为空值。在 Dojo/Dijit 的最后几个版本中,这种行为似乎得到了纠正,正如您在 Craig Swing 的小提琴中看到的那样。

如果您绑定的属性不是字符串,您可以将单个 espace 指定为 dummy 选项的值而不是 null,因为稍后将在控制器中绑定为 null,因此将显示 dummy 选项。前任:

<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 回答