日期:2014-05-17  浏览次数:20727 次

在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> ????

  1. <html:select?property="id">??//这里一定不能再用vlue属性了,只用一个property就可以了 ??
  2. ????????<c:forEach?var="row"?item="${rs.rows}">??? ??
  3. ??????????<html:option?value="row.id">??
  4. ?????????????<c:out?value="row.name"/>??
  5. ??????????</html:option>??? ??
  6. ????????</c:forEach>????? ??
  7. ??????????</html:select>?????????

总结:在使用Struts进行修改功能时,要在修改页面上取的数据库先前的值。只要在form中reset里取得数据库里的值,然后在前台页面里html:form里对应的项设置其property为form中对应的属性值就好了,而不需要再设置value属性了。

1 楼 王者之剑 2006-12-06  
真正的struts的做法

XXAction{
execute()
{
 request.setAttribute("ids", getNameID());
}
private List getNameID()
{
 //load from db
 ...
 //make a LabelValueBean List
 ArrayList ls = new ArrayList();
 for()
 {
   ls.add(new LabelValueBean(name,id);
 }
		
 }		
}

jsp
<html:select property="id">
	<html:optionsCollection name="ids" />
</html:select>
2 楼 王者之剑 2006-12-06  
LabelValueBean是struts中的一个类,用来配合html:optionsCollection做显示,这里只展示了一种常用方案,
更多细节请看html:optionsCollection相关文档
3 楼 王者之剑 2006-12-06  
还加一点,你可能会碰到要多加一个的情况,那么可以这样。
<html:select property="id"> 
    <html:option value="0">无</html:option>  
    <html:optionsCollection name="ids" />   
</html:select>

即html:option, html:options, html:optionsCollection这几个标标签可以组合。
看看这样写的结果
<html:select property="id"> 
    <html:option value="0">无</html:option>  
    <html:optionsCollection name="ids" />
<html:option value="0">