论坛首页 Java企业应用论坛

struts里nested 标签的简单应用

浏览 2215 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2006-12-21  

我感觉 nested 标签就是把表单直接对应到一个业务类对象,在FORM类中定义这个业务类对象就可,这个标签用起来也不难,而且还挺好用,比如说有个 表单类PersonForm,业务类Person,在PersonForm中定义 Person person=new Person(); 注意这里用new分配空间,不能只是这样 Person person;     

在Person类中定义 private String name; private String sex;

那么在.jsp中表单部分如下:
//其他代码  
<html:form action="/PersonAction">  
<nested:nest property="person">  
     <nested:message key="use_nested.jsp.form.name"/>  
     <nested:text property="name" size="18"/><br/>  
     <nested:message key="use_nested.jsp.form.sex"/>  
     <nested:text property="sex" size="18" /><br/>  
</nested:nest>  
<html:submit>  
<bean:message key="use_nested.jsp.form.submit"/>  
</html:submit>  
</html:form>  
//其他代码 

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

 然后在 业务类 Person 中加上 private  Address  add=new Address();    结合<nested:writeNesting/>后的.jsp 为:


///其他代码  
<html:form action="/PersonAction">  
<nested:nest property="person">  
    <nested:message key="use_nested.jsp.form.currentNesting"/>  
    <nested:writeNesting/><br/>  
    <nested:message key="use_nested.jsp.form.name"/>  
    <nested:text property="name" size="18"/><br/>  
    <nested:message key="use_nested.jsp.form.sex"/>  
    <nested:text property="sex" size="18" /><br/>  
 
    <nested:nest property="add">  
        <nested:message key="use_nested.jsp.form.currentNesting"/>  
        <nested:writeNesting/>  
        <nested:message key="use_nested.jsp.form.country"/>  
        <nested:text property="country" size="18"/><br/>  
        <nested:message key="use_nested.jsp.form.province"/>  
        <nested:text property="province" size="18"/><br/>  
    </nested:nest>  
</nested:nest>  
<html:submit>  
<bean:message key="use_nested.jsp.form.submit"/>  
</html:submit>  
</html:form>  
///其他代码 

其中第二个<nested:writeNesting/>会输出 person.add 表明当前类层次当你输出表单数据时 还可以定义一个顶层级别的 javaBean,这时候就利用 nested 的<nested:root> 标签,比如要输出上个表单元素时,顶层级别就是 PersonForm ,其他则与上面是一样,如下:


//其他代码  
<jsp:useBean id="PersonForm" type="nestedtag.PersonForm" scope="request" />  
<nested:root name="PersonForm">  
    <nested:nest property="person">  
    <nested:message key="use_nested.jsp.form.name"/>  
    <nested:write property="name"/><br/>  
    <nested:message key="use_nested.jsp.form.sex" />  
    <nested:write property="sex"/><br/>
  
    <nested:nest property="add">  
        <nested:message key="use_nested.jsp.form.country"/>  
        <nested:write property="country"/><br/>  
        <nested:message key="use_nested.jsp.form.province"/>  
        <nested:write property="province"/><br/>  
    </nested:nest>  
    </nested:nest>  
</nested:root>  
//其他代码 

nested 的其他子标签则与 html子标签和 bean子标签的功能类似,就不用介绍了。最后说明的是,利用nest 实现的功能也可以不用 nest 实现,只不过写 property 是把完整的属性路径写全就行了,因为比较简单看了下面的代码就明白了,

 //其他代码  
<html:form action="/PersonAction">  
<bean:message key="use_nested.jsp.form.name"/>  
<html:text property="person.name" size="18"/><br/>  
<bean:message key="use_nested.jsp.form.sex"/>  
<html:text property="person.sex" size="18" /><br/>  
 
<bean:message key="use_nested.jsp.form.country"/>  
<html:text property="person.add.country" size="18"/><br/>  
<bean:message key="use_nested.jsp.form.province"/>  
<html:text property="person.add.province" size="18"/><br/>  
 
<html:submit>  
<bean:message key="use_nested.jsp.form.submit"/>  
</html:submit>  
</html:form>  
//其他代码  
 

 

 
论坛首页 Java企业应用版

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