论坛首页 Java企业应用论坛

在Struts的html:select标签中显示默认值

浏览 38738 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-11-30  

最近在写一个系统中,有一个有下拉列表的修改资料功能,对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属性了。

   发表时间: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>
0 请登录后投票
   发表时间:2006-12-06  
LabelValueBean是struts中的一个类,用来配合html:optionsCollection做显示,这里只展示了一种常用方案,
更多细节请看html:optionsCollection相关文档
0 请登录后投票
   发表时间: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">无</html:option>  
    <html:optionsCollection name="ids" />   
</html:select>

0 请登录后投票
   发表时间:2006-12-06  
optionsCollection 中的类型也不一定必须是LabelValueBean,
在<html:optionsCollection/>标签中可以指定label和name分别是ListItem的属性名字
0 请登录后投票
   发表时间:2006-12-07  
真的不错
0 请登录后投票
   发表时间:2007-09-18  
如果我要其中一项作为默认值来显示呢
0 请登录后投票
   发表时间:2007-09-18  

如果Select的选项固定,可以直接用Selected标签实现默认值(JAVA代码1)

代码
  1. <html:select property="id">       
  2.     <html:option value="0" selecded>html:option>        
  3.     <html:optionsCollection name="ids" />         
  4. html:select>    

 

如果是动态的(JAVA代码2),可以在相对应Action的From中设置默认值(JAVA代码3)

java 代码2
  1. public List getOptions()      
  2. {      
  3.   List ls = new ArrayList();      
  4.  for(;;)    
  5.  {      
  6.    ls.add(new LabelValueBean(key,value);      
  7.  }      
  8.               
  9.  }            
  10. }      

java 代码3

  1. public ActionForward update(ActionMapping mapping, ActionForm form,   
  2.             HttpServletRequest request, HttpServletResponse response) {   
  3. //do some thing        
  4. xxxForm f = (xxxForm)form;   
  5. f.setOption(value);   //这里设置下拉选项的默认值   
  6. return mapping.findForward("page");   
  7.   
  8.     }  


如果上面的还不能满足的话,可以试试用JS控制

js 代码
  1. function Selected(index,valued){   
  2.     if(index!=""){   
  3.         var lengths = $("select").options.length;//下拉项的长度   
  4.         for(var i=0;i
  5.             if(valued == index){   
  6.                 $("select").options[i].selected=true;   
  7.             }   
  8.         }   
  9.     }   
  10. }  

 

0 请登录后投票
   发表时间:2007-09-18  

还有,比如楼主的代码

代码
  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>     

可以在

代码
  1. <c:forEach var="row" item="${rs.rows}"> ……c:forEach>     

之间进行判断,像Struts1.X中的

代码
  1. <logic:equal name="by" value="desc" scope="session">  

 


 

 

0 请登录后投票
   发表时间:2007-09-18  


<html:select property="Name" name="**Form" value="admin" >
<html:options collection="list" property="userName" labelProperty="userName"/>
</html:select>

当userName=admin时,默认selected
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics