`
litxuf
  • 浏览: 122451 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts Nested 标签库(转)

阅读更多

Struts Nested标签库的一部分标签用于表达JavaBean之间的嵌套关系,还有一部分标签能够在特定的嵌套级别提供和其他Struts标签相同的功能。

  • <nested:nest>,定义一个新的嵌套级别
  • <nested:writeNesting>,输出当前嵌套级别信息

<nested:nest>标签可以表达JavaBean之间的嵌套关系,以三个JavaBean为例,分别是:PersonForm Bean,Person Bean和Address Bean,在PersonForm Bean中包含一个Person Bean类型的属性person,在Person Bean中又包含一个Address Bean类型的属性address。

定义两个<nested:nest>标签,第一个<nested:nest>标签嵌套在<html:form>标签中,如下:

      <html:form action="/showPerson">

           <nested:nest property="person">

                  Last Name:<nested:text property="lastName"/><BR>

          .....

         </nested:nest>

     </html:form>

以上<nested:nest>标签的上层JavaBean为於<html:form>表单标签对应的PersonForm Bean,<nested:nest>标签的property属性为“person",代表PersonForm Bean的person属性,这个person属性代表Person Bean,因此嵌套在<nested:nest>标签内部的Nested标签都相对于这个Person Bean,例如第一个<nested:text>标签的property属性”lastName“,代表Person Bean的lastName属性。

第二个<nested:nest>标签嵌套在第一个<nested:nest>标签内部:如下

<html:form action="/showPerson">

           <nested:nest property="person">

            .............

                     <nested:nest property="address">

                       Current nesting is :<nested:writeNesting/><br>

                       Street 1:<nested:text property="street1"/><BR>

          .....

         </nested:nest>

     </nested:nest>

     </html:form>

在以上代码中,第二个<nested:nest>标签的property属性为“address",代表PersonBean 的address属性,这个address属性代表Address Bean,因此嵌套在第二个<nested:nest>标签内部的Nested标签都相对於这个Address Bean。

   第二个<nested:nest>标签内还嵌套了一个<nested:writeNesting>标签,它显示当前的嵌套级别,输出结果为”person.address".

 

在默认情况下,<nested:nest>标签的property属性为当前ActionForm Bean的某个属性,或者为於上层<nested:nest>标签对应的JavaBean的某个属性,可以使用<nested:root>标签来显式指定顶层级别的JavaBean,<nested:root>标签的name属性指定JavaBean的名字,嵌套在<nested:root>标签中的<nested:nest>标签的property属性为这个JavaBean的某个属性。

和其他标签库中的标签功能相同的Nested标签

许多Nestd标签库中的标签具有和其他标签库中的标签相同的功能,区别在于Nested标签库中的标签属性相对于当前的嵌套级别,例如

   <nested:nest property = "person">

        Last name :<nested:text property="lastName"/>

   </nested:nest>

上面的<nested:text>标签和<html:text>标签具有相同的功能,都可以生成文本框,两者的区别在于<nested:text>标签的property属性为於当前嵌套级别对应的JavaBean的某个属性,而<html:text>标签的property属性为於当前表单对应的ActionForm Bean的某个属性。

 

 

比如我有一个User类和一个UserInfo类,前者记录用户的帐号密码,后者记录用户的详细信息。前者也有一个UserInfo属性,这样它们两者是嵌套了。   
   现在我要把这个用户的帐号和详细信息都显示到界面上。   
   一种方式是在actionForm中用两个属性User    user和UserInfo    userInfo来存储,在jsp中就可以用如下方式显示出来:   
   <nested:nest    property="user">   
           帐号:<nested:write    property="account"/>   
   </nested:nest>   
   <nested:nest    property="userInfo">   
           姓名:<nested:write    property="name"/>   
           性别:<nested:write    property="sex"/>   
   </nested:nest>   
   由于user和userInfo本身就是嵌套的,所以第二种方式就在actionForm中使用一个User    user属性即可:   
   <nested:nest    property="user">   
           帐号:<nested:write    property="account"/>   
           <nested:nest    property="userInfo">   
                   姓名:<nested:write    property="name"/>   
                   性别:<nested:write    property="sex"/>   
           </nested:nest>   
   </nested:nest>   
    
   这样处理是不是很方便了,actionForm可以直接放上数据存储对象,如果使用了hibernate做数据持久层,我们就可以直接把持久画对象放入actionForm来显示到界面上,不用在actionForm里写很多属性来分别存储数据,也免去了给这些属性分别赋值的过程。   
    
   如果我们把上边例子中的<nested:write/>标记换成<nested:text/>,这就类似于<html:text/>标记,是一个输入框,这样我们就可以把街面上输入一次提交到actionForm中的这个数据存储对象,比如user。我们在action中就可以直接获得这个user进行处理,非常方便。

 

 

我感觉 nested 标签就是把表单直接对应到一个业务类对象,在FORM类中定义这个业务类对象就可,这个标签用起来也不难,而且还挺好用,

比如说有个 表单类PersonForm,业务类Person,在PersonForm中定义 Person person=new Person(); 注意这里用new分配空间,不能只是这样 Person person;                 在Person类中定义 private String name; private String sex;

那么在.jsp中表单部分如下:

java 代码
  1. ///其他代码   
  2. <html:form action="PersonAction">   
  3. <nested:nest property="person>
  4. name: <nested:text property="name"/><br/>
  5. sex:     <nested:text   property="sex"   /><br/>   
  6. </nested:nest>   
  7. <html:submit/>   
  8. </html:form>   
  9. //其他代码  

其中 <nested:nest> 理解就是定义一个类层次,它也可以嵌套使用,当业务类中还包含其他业务类时就可以使用它的嵌套,当使用嵌套时如果想显式知道嵌套的层次可以利用nested 标签的   <nested:writeNesting> 标签进行输出。比如现在我们再加一个业务类 Address ,类中数据元素为: private String country; private String province; 然后在 业务类 Person 中加上                    private Address add=new Address(); 结合<nested:writeNesting> 后的.jsp 为:

java 代码
  1. //其他代码   
  2. <html:form action="/PersonAction">   
  3. <nested:nest property="person">   
  4. <nested:message key="use_nested.jsp.form.name"/><nested:text property="name" size="18"/><br/>  
  5. <nested:message key="use_nested.jsp.form.sex"/><nested:text property="sex" size="18" /><br/>  
  6. <br/>   
  7. <nested:nest property="add">   
  8. current nesting is: <nested:writeNesting/><br/>   
  9. <nested:message key="use_nested.jsp.form.country"/><nested:text property="country" size="18"/><br/>  
  10. <nested:message key="use_nested.jsp.form.province"/><nested:text property="province" size="18"/><br/>  
  11. </nested:nest>   
  12. </nested:nest>   
  13. <html:submit><bean:message key="use_nested.jsp.form.submit"/></html:submit>   
  14. </html:form>   
  15. //其他代码   

其中 <nested:writeNesting/> 出会输出 person.add 表明当前类层次

当你输出表单数据时 还可以定义一个顶层级别的 javaBean,这时候就利用 nested 的 <nested:root> 标签,比如要输出上个表单元素时,顶层级别就是 PersonForm ,其他则与上面是一样,如下:

java 代码
  1. ///其他代码   
  2. <jsp:useBean id="PersonForm" type="nestedtag.PersonForm" scope="request" />   
  3. <nested:root name="PersonForm">   
  4.      <nested:nest property="person">   
  5.      <nested:message key="use_nested.jsp.form.name"/><nested:write property="name"/><br/>  
  6.      <nested:message key="use_nested.jsp.form.sex" /><nested:write property="sex"/><br/>   
  7.          <nested:nest property="add">   
  8.          <nested:message key="use_nested.jsp.form.country"/><nested:write property="country"/><br/>  
  9.          <nested:message key="use_nested.jsp.form.province"/><nested:write property="province"/><br/>  
  10.          </nested:nest>   
  11.      </nested:nest>   
  12. </nested:root>   
  13. ///其他代码  
分享到:
评论

相关推荐

    struts1标签库详解

    Struts 提供了非常多的标签,依据功能和使用习惯的不同被分到了五个标签库中:Bean Tags、HTML Tags、Logic Tags、Nested Tags 和 Tiles Tags。下面将对前三个标签库中的标签进行详细的介绍。 Bean Tags Bean Tags...

    Struts配置及标签库详解

    4. `struts-nested.tld`:Nested标签库,用于处理嵌套属性,通常与Tiles框架一起使用,使得在JSP页面中可以方便地访问多层嵌套的Bean属性。 了解这些标签库后,开发人员可以更高效地构建视图层,减少Java代码在JSP...

    Struts标签库 ppt教程

    **Nested标签库**增强了对其他Struts标签的嵌套使用能力,这在处理复杂页面结构时非常有用。 **Tiles标签库**则是为了创建复合式的网页,允许开发者将多个组件组合成一个完整的页面,提高了页面布局的灵活性和可...

    JSP Struts之HTML标签库详解

    5. **Nested标签库**:这个库增强了其他Struts标签的嵌套能力,使得在复杂表单和布局中使用Struts标签更加方便。 Struts标签库的一个重要特性是它们支持属性的嵌套引用,这意味着可以使用`.`来访问对象的深层属性,...

    struts标签库手册(chm格式)

    5. **nested标签**:当处理嵌套的JavaBean或复杂对象时,nested标签库提供了一种解决方式,例如`&lt;nested:property&gt;`可以深入到对象的嵌套属性。 6. **display标签**:displaytag库提供了一套标签,用于创建复杂的...

    struts标签 struts标签 struts标签

    Struts标签库提供了一组预定义的JSP标签,这些标签有助于开发者更有效地处理常见的Web开发任务,如表单处理、数据展示、逻辑控制等。在本文中,我们将深入探讨其中的Bean Tags、HTML Tags和Logic Tags。 1. **Bean ...

    JSP Struts的HTML标签库详解

    5. **Nested标签库**:提供了一种增强的嵌套功能,使得在HTML标签库中的标签可以更好地互相嵌套和操作,提高复杂表单的构建能力。 接下来,我们深入了解一下HTML标签库的一些常见标签和属性: - `&lt;html:html&gt;`:这...

    struts1标签库详解.doc

    Struts1标签库是Java Web开发中用于构建MVC架构的Apache Struts框架的重要组成部分,它提供了一系列方便的标签,帮助开发者简化视图层的实现。这篇文档详细介绍了Struts1标签库的主要内容,旨在帮助初学者快速掌握...

    struts1五大标签库

    Nested标签库是为了支持嵌套形式的HTML元素而设计的,特别是在处理复杂表单时很有用。例如,`&lt;nested:property&gt;`标签允许在表单中处理嵌套的JavaBean属性。这个库使得在Struts1中处理层次结构的数据变得更加简单。 ...

    Struts标签库学习.rar

    Bean标签库主要处理JavaBeans,Nested标签库用于处理嵌套属性,Tiles标签库则用于页面布局和组合。 通过学习这些文档,开发者可以更好地理解和掌握Struts1.0框架的标签库,提高开发效率,同时也能为向更现代的框架...

    《精通Java Web整合开发》随书光盘源码__第11章 Struts专用标签库详解

    6. **Nested标签库** Nested库是为了处理具有嵌套属性的JavaBean而设计的,使得在JSP页面中可以方便地引用和操作这些属性,提高了代码的可读性。 7. **Tiles标签库** Tiles扩展了Struts框架,提供了一种方式来...

    struts整体架构及核心标签库的介绍

    5. **Nested标签库**:处理嵌套的ActionForm属性,使在JSP中可以更方便地引用深层对象属性。 6. **XSLT标签库**:用于在JSP中进行XML数据的转换和呈现。 **三、Struts工作流程** 1. 用户发送HTTP请求到服务器。 2...

    struts标签库应用

    Nested标签库是专门为处理嵌套属性而设计的,主要用于解决当JavaBeans包含其他JavaBeans作为属性时的表示问题。例如,`&lt;nested:property&gt;`标签可以递归地访问JavaBean的嵌套属性,这对于展示和编辑复杂的数据结构...

    Struts常用标签库合集

    以下是对 Struts 标签库的详细解释: 1. **Bean Tags**: Bean Tags 主要用于创建、访问和操作 Java 对象(bean)。你可以用它来初始化 bean,获取或设置 bean 的属性,以及根据 HTTP 请求中的 cookies、headers ...

    struts1的标签

    5. **Nested标签库**: Nested库增强了其他Struts标签的嵌套功能,使得在复杂结构的数据模型中使用标签更加方便。例如,可以嵌套`&lt;nested:property&gt;`来处理多层属性的访问。 在使用Struts1标签时,有几个共同的...

    Struts标签库查询手册

    5. `nested`标签库:这个库为处理嵌套属性和复杂对象提供了支持,例如`&lt;nested:property&gt;`可以访问和显示对象的嵌套属性。 在"Struts标签库查询手册.chm"文件中,你将找到这些标签的详细使用方法,包括它们的属性、...

    Struts标签库查询手册.rar

    4. **Nested标签**:当处理复杂对象时,Nested标签库提供了一种嵌套的方式来访问对象的属性。这使得在显示层次结构数据时更加方便。 5. **Tiles标签**:Tiles框架允许开发者创建可重用的页面组件(Tiles)。通过`...

    经典Struts专用标签库详解(代码测试通过)

    Struts标签库是JSP自定义标签的集合,它们提供了用于构建动态Web页面的功能,如表单处理、控制流程等。这些标签与Struts框架紧密结合,可以无缝地与ActionForm、Action和控制器交互,减少硬编码,提高代码可读性。 ...

Global site tag (gtag.js) - Google Analytics