日期:2014-05-18  浏览次数:20858 次

谁能帮我解释一下struts下拉列表的标签都是什么意思?
<html:select   property= " ">
<html:options   collection= " "   property= " "   labelProperty= " "/>


</html:select>

上面的   property,collection,lableproperty各表示什么?

------解决方案--------------------
Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用Java Servlet和JSP构建Web应用的一项非常有用的技术。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,因而吸引了众多的开发人员的关注。


首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command模式,每个继承Action的子类都必须实现一个方法execute。

  在struts中,实际是一个表单Form对应一个Action类(或DispatchAction),换一句话说:在Struts中实际是一个表单只能对应一个事件,struts这种事件方式称为application event,application event和component event相比是一种粗粒度的事件。

  struts重要的表单对象ActionForm是一种对象,它代表了一种应用,这个对象中至少包含几个字段,这些字段是Jsp页面表单中的input字段,因为一个表单对应一个事件,所以,当我们需要将事件粒度细化到表单中这些字段时,也就是说,一个字段对应一个事件时,单纯使用Struts就不太可能,当然通过结合JavaScript也是可以转弯实现的。

  Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。其最初萌芽于Craig McClanahan的构思,诞生至今也一年有余了。现在,Struts是Apache软件基金会旗下Jakarta项目组的一部分,其官方网站是http://jakarta.apache.org/struts。由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。

  目前的Struts 1.0修正版包括完整的文档,既可以说是用户文档又是开发指导文档。如果读者是JSP新手,或者对MVC设计模式不是太熟的话,可能刚上路时会比较慢,不过不用担心,要相信自己会尽快赶上的:)

  此外,应该注意到尽管当前Struts只是1.0版,但已经相当稳定了,作者从Struts 0.9版就在一个大规模的项目中应用了(最近升级到1.0版),至今还没有遇到什么麻烦问题。实际上,Struts在这个要开发复杂用户界面的项目中,为我们团队大大的缩短了开发时间,在此衷心的感谢Struts项目团队的所有开发人员。

  开始上路!

  Struts框架可分为以下四个主要部分,其中三个就和MVC模式紧密相关:

  1、模型(Model),本质上来说在Struts中Model是一个Action类(这个会在后面详细讨论),开发者通过其实现商业逻辑,同时用户请求通过控制器(Controller)向Action的转发过程是基于由struts-config.xml文件描述的配置信息的。

  2、视图(View),View是由与控制器Servlet配合工作的一整套JSP定制标签库构成,利用她们我们可以快速建立应用系统的界面。

  3、控制器(Controller),本质上是一个Servlet,将客户端请求转发到相应的Action类。

  4、一堆用来做XML文件解析的工具包,Struts是用XML来描述如何自动产生一些JavaBean的属性的,此外Struts还利用XML来描述在国际化应用中的用户提示信息的(这样一来就实现了应用系统的多语言支持)。

  好,下一步咱们来看看构成这个框架的各个部分以及相互之间是怎样运作的吧!

  配置

  使用Struts之前,咱们必先设置好JSP服务器,以便让服务器在用户请求时,知道该如何将指定后缀的请求转到相应的Controller-Struts ActionServlet处理,当然,这些配置信息都一般在服务器启动时通过web.xml文件读入的。我们可以在web.xml定义多个Controlloer,为每一个应用定义一个。一个典型的web.xml文件配置如下,其中有相应的注释,很好懂的,在后面讨论Action的时候,我们将主要分析strutc-config.xml。

------解决方案--------------------
property是代表formBean的属性名的,比如你的formBean有一个地区的属性area,那么下拉菜单的选中值就作为formBean的area属性的值提交给后台,
collection是你要引用的集合的名称,property和labelProperty分别表示下拉列表每一项的值的标签值,和collection属性结合起来就可以从collection指定的集合中取得数据生成html相应的下拉标签的代码,如:

<%
java.util.List list=new java.util.ArrayList();
for(int i=0;i <5;i++
{
Bean p=new Bean( "name "+i, "value "+i);
list.add(p);
}
request.setAttribute( "beans ",list);
%>
<html: select property= "bean ">
<html:options collection= "beans " property= "pvalue " labelProperty= "pname "/>
</html:select>
其中Bean的定义如下:
public class Bean
{
private String pname;
private String pvalue;
public void setPname(String pname)
{
this.pname=pname;
}
public void setPvalue(String pvalue)
{
this.pvalue=pvalue;
}
public String getPname()
{
return pname;
}
public String getPvalue()
{
return pvalue;
}
public Bean(String pname,String pvalue)
{
this.pname=pname;
this.pvalue=pvalue;
}
}


这样上面的标签代码经过编译后生成的html代码就应该是下面的内容: