引用 引用 LabelValueBean应用

★风中♀影★ 的 LabelValueBean应用

用LabelValueBean类管理一组选项

multibox和另外几种标签往往需要使用一个或多个标签/值对作为其选项的来源。说到封装一组label/value值,org.apache.struts.util.LabelValueBean类是一个非常方便的工具。LabelValueBean类是一个JavaBean,它有两个String类型的属性:label和value。我们可以用它的两个构造器之一来创建LabelValueBean对象。

public LabelValueBean()

public LabelValueBean(java.lang.String label,)

java.lang.String value

我们通常需要先创建多个LabelValueBean实例并把它们放入一个ArrayList或其他类型的集合,再把这个集合设置为作用域对象以便从JSP页面对之进行访问。或者,我们也可以把包含着LabelValueBean对象的集合先放入另一个对象,再把后者设置为作用域对象。

下面是把包含着LabelValueBean对象的集合设置为作用域对象时的基本原则:

(1) 如果在一个表单中只用到LabelValueBean对象,建议添加一个能返回集合的动作表单的属性。

(2) 如果在应用程序里的许多地方需要用到LabelValueBean对象,就应该把它们构成的集合设置为ServletContext对象的一个属性。

(3) 如果LabelValueBean对象的变化比较频繁(比如说,它们的值来自某个数据库并总是变来变去),就应该在某个动作类里去创建一个包含着这些LabelValueBean对象的集合,并把这个集合设置为一个请求作用域对象。

在action中把lwlxmlist(这是个ArrayList,里面放的是LabelValueBean)放到request中(没有用到spring框架,pub_code是一个代码表,树状结构的,根节点是"LWLXM"):
......
request.setAttribute("lwlxmlist", new Code().getMenu("LWLXM", "pub_code"));
......
在Code类中,组织一个ArrayList,里面放的是Labelvaluebean(大概的代码如下,没有用Hibernate,用的是我们实验室的一个数据库连接池,主要用来连接国产数据库的,仅供参考):
public ArrayList getMenu(String type_code, String table_name){
  try{
   ArrayList ret_list=new ArrayList();
   SQLBean conn=new SQLBean();
   ResultSet rs=conn.executeQuery("select * from "+table_name+" where parent_id=(select id from "+
     table_name+" where code='"+type_code+"') order by code");
   while(rs.next()){   
    ret_list.add(new LabelValueBean(rs.getString("description"),(rs.getString("code")==null)?"":rs.getString("code").trim()));
   }
   conn.close();
   return ret_list;
  }catch(Exception e){
   e.printStackTrace();
   return null;
  }
}
最后,在页面中这样显示下拉菜单:
......
<tr>
    <td align="left">
     论文类型:
    </td>
    <td align="left">
     <logic:notEmpty name="lwlxmlist" scope="request">
      <html:select property="lwlxm">
       <html:optionsCollection name="lwlxmlist" />
      </html:select>
     </logic:notEmpty>
     <font size=2 color=red><html:errors property="lwlxm" />
     </font>
    </td>
   </tr>
......
不要忘了在jsp页面中引入html和logic标签:
<%@taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
<%@taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
<%@taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>

ok了,这样就有下拉菜单了。



你可能感兴趣的:(spring,bean,jsp,Hibernate,struts)