在Struts的html:select标签中显示默认值
最近在写一个系统中,有一个有下拉列表的修改资料功能,对Struts的html:select进行了运用。
其中怎么样使进入修改页面之后,该下拉列表里的数据是该需要修改的数据列的数据字段,也就是使html:select中显示的值默认对应数据库中的值。测试修改了一个下午,总得不出结果,最后还是看了Struts的examples才算是弄出来了,如:
<html:select property="id"><c:foreach item="rs.rows" var="row"><html:option value="row.id">???????</html:option>???</c:foreach>????</html:select>??????????<html:select property="c_id"></html:select>????
即html:option, html:options, html:optionsCollection这几个标标签可以组合。
看看这样写的结果
<li class='alt'><span>????</span><span class='tag'><</span><span class='tag-name'>html:optionsCollection</span><span>?</span><span class='attribute'>name</span><span>=</span><span class='attribute-value'>"ids"</span><span>?</span><span class='tag'>/></span><span>?????? ??</span> </li>
<li class=''><span/><span class='tag'><span class='tag-name'>html:select</span><span class='tag'>></span><span>????</span> </span></li>
</ol>
</div>
<p>?</p>
<p>如果是动态的(JAVA代码2),可以在相对应Action的From中设置默认值(JAVA代码3)</p>
<div class='code_title'>java 代码2</div>
<div class='dp-highlighter'>
<div class='bar'/>
<ol class='dp-j'>
<li class='alt'><span><span class='keyword'>public</span><span>?List?getOptions()??? ??</span></span> </li>
<li class=''><span>{??? ??</span> </li>
<li class='alt'><span>??List?ls?=?</span><span class='keyword'>new</span><span>?ArrayList();??? ??</span> </li>
<li class=''><span>?</span><span class='keyword'>for</span><span>(;;)? ??</span> </li>
<li class='alt'><span>?{??? ??</span> </li>
<li class=''><span>???ls.add(</span><span class='keyword'>new</span><span>?LabelValueBean(key,value);??? ??</span> </li>
<li class='alt'><span>?}??? ??</span> </li>
<li class=''><span>??????????? ??</span> </li>
<li class='alt'><span>?}????????? ??</span> </li>
<li class=''><span>}??? ??</span> </li>
</ol>
</div>
<p>java 代码3</p>
<div class='dp-highlighter'>
<div class='bar'/>
<ol class='dp-j'>
<li class='alt'><span><span class='keyword'>public</span><span>?ActionForward?update(ActionMapping?mapping,?ActionForm?form, ??</span></span> </li>
<li class=''><span>????????????HttpServletRequest?request,?HttpServletResponse?response)?{ ??</span> </li>
<li class='alt'><span/><span class='comment'>//do?some?thing????? </span><span>??</span> </li>
<li class=''><span>xxxForm?f?=?(xxxForm)form; ??</span> </li>
<li class='alt'><span>f.setOption(value);???</span><span class='comment'>//这里设置下拉选项的默认值 </span><span>??</span> </li>
<li class=''><span/><span class='keyword'>return</span><span>?mapping.findForward(</span><span class='string'>"page"</span><span>); ??</span> </li>
<li class='alt'><span>??</span> </li>
<li class=''><span>????}??</span> </li>
</ol>
</div>
<p><br/>
如果上面的还不能满足的话,可以试试用JS控制 </p>
<div class='code_title'>js 代码</div>
<div class='dp-highlighter'>
<div class='bar'/>
<ol class='dp-c'>
<li class='alt'><span><span class='keyword'>function</span><span>?Selected(index,valued){ ??</span></span> </li>
<li class=''><span>????</span><span class='keyword'>if</span><span>(index!=</span><span class='string'>""</span><span>){ ??</span> </li>
<li class='alt'><span>????????</span><span class='keyword'>var</span><span>?lengths?=?$(</span><span class='string'>"select"</span><span>).options.length;</span><span class='comment'>//下拉项的长度 </span><span>??</span> </li>
<li class=''><span>????????</span><span class='keyword'>for</span><span>(</span><span class='keyword'>var</span><span>?i=0;i </span></li>
<li class='alt'><span>????????????</span><span class='keyword'>if</span><span>(valued?==?index){ ??</span> </li>
<li class=''><span>????????????????$(</span><span class='string'>"select"</span><span>).options[i].selected=</span><span class='keyword'>true</span><span>; ??</span> </li>
<li class='alt'><span>????????????} ??</span> </li>
<li class=''><span>????????} ??</span> </li>
<li class='alt'><span>????} ??</span> </li>
<li class=''><span>}??</span> </li>
</ol>
</div>
<p>?</p><html:options collection="list" property="userName" labelProperty="userName"/>
</html:select>
当userName=admin时,默认selected
<html:options collection="list" property="userName" labelProperty="userName"/>
</html:select>
当userName=admin时,默认selected
13 楼 wenson 2007-09-19 引用kikumail 20 小时前
但是正常情况下,我们要将从数据库中读出的值作为下拉列表的默认值.
如:下拉列表中有男,女.而数据库中为男,我想在点击修改时,下拉列表能根据数据库中的值自动设置默认值.
你可以在示Form之前先form的select性值,比如<html:select property="id"> ,那么你可以把id的值上:form.setId("中出的值").