`

sturts1与struts2中标签的解释

 
阅读更多
由于现在struts2的广泛使用,因此,先介绍struts2的相关标签
1.s:select
  例子:
  
		<s:form action="address!list.do" method="post" name="form1">
			<TABLE border="0" width="100%" class="pager">
				<TR>
					<TD align="left">
						<s:text name="pager.pageSize" />
						<s:select name="pageSize" key="pager.pageSize"
							list="pager.pageSizeIndexs" value="pager.pageSize"
							onchange="document.all.pageNo.value='1';document.all.form1.submit();" />
					</TD>
					<TD align="center">
						<s:text name="pager.rowCount" />
						<s:property value="pager.rowCount" />
					</TD>
					<TD align="right">
						<a
							href="javascript:document.all.pageNo.value='<s:property value="pager.firstPageNo" />';document.all.form1.submit();"><s:text
								name="pager.firstPageNo" /> </a>
						<a
							href="javascript:document.all.pageNo.value='<s:property value="pager.prePageNo" />';document.all.form1.submit();"><s:text
								name="pager.prePageNo" /> </a>
						<a
							href="javascript:document.all.pageNo.value='<s:property value="pager.nextPageNo" />';document.all.form1.submit();"><s:text
								name="pager.nextPageNo" /> </a>
						<a
							href="javascript:document.all.pageNo.value='<s:property value="pager.lastPageNo" />';document.all.form1.submit();"><s:text
								name="pager.lastPageNo" /> </a>
						<s:select name="pageNo" list="pager.pageNoIndexs"
							value="pager.pageNo" onchange="document.all.form1.submit();" />
					</TD>
					<TD width="20"></TD>
				</TR>
			</TABLE>
		</s:form>

其中:
   
<s:select name="pageSize" key="pager.pageSize"
							list="pager.pageSizeIndexs" value="pager.pageSize"
							onchange="document.all.pageNo.value='1';document.all.form1.submit();" />

其中上述代码的意思等同于如下语句:
					<select name="pageSize">
						<option value="pager.pageSize1">pager.pageSize1</option>
						<option value="pager.pageSize2">pager.pageSize2</option>
						<option value="pager.pageSize3">pager.pageSize3</option>
						<option value="pager.pageSize4">pager.pageSize4</option>
					</select>

其中:name对应的属性值要为跳转这个标签所在页面(当前jsp页面)的action中的一个属性,而且有setter/getter方法,key="pager.pageSize"表示跳转到这个标签(s:select)(如果点击某一页面上的一个连接,这个连接为address.do?method=init,点击之后就跳转到s:select所在的页面,则address对应的action就为这里所指的action)(即为struts.xml文件中address对应的action类)中有或父类中有pager属性,并且有getter和setter方法,而这个pager属性所属对象所对应的类中要有pageSize属性,而且要有getter和setter方法。list="pager.pageSizeIndexs"表示跳转到这个页面的action中有getPager方法,并且这个pager对象的类有getPageSizeIndexs方法,这个方法返回一个list/set/collection或其他容器

2.s:iterator
   例子:
  
			<s:iterator value="pager.resultList">
				<TR>
					<TD>
						<s:property value="name" />
					</TD>
					<TD>
						<s:property value="sex" />
					</TD>
					<TD>
						<s:property value="mobile" />
					</TD>
					<TD>
						<s:property value="email" />
					</TD>
					<TD>
						<s:property value="qq" />
					</TD>
					<TD>
						<s:property value="company" />
					</TD>
					<TD>
						<s:property value="address" />
					</TD>
					<TD>
						<s:property value="postcode" />
					</TD>
					<TD>
						<a href='address!edit.do?id=<s:property value="id"/>'><s:text
								name="button.edit" /> </a>
						<a href="address!delete.do?id=<s:property value="id"/>"><s:text
								name="button.delete" /> </a>
					</TD>
				</TR>
			</s:iterator>

这里的value属性值的解释:跳转到这个jsp页面的那个action(1中已经提到)中要有getPager方法,返回的值为一个类的实例,这个类中要有getreslutList方法,且返回的必须是一个容器类(list、set等类)

3.s:property
   例子:
<s:iterator value="pager.resultList">
				<TR>
					<TD>
						<s:property value="name" />
					</TD>
					<TD>
						<s:property value="sex" />
					</TD>
					<TD>
						<s:property value="mobile" />
					</TD>
					<TD>
						<s:property value="email" />
					</TD>
					<TD>
						<s:property value="qq" />
					</TD>
					<TD>
						<s:property value="company" />
					</TD>
					<TD>
						<s:property value="address" />
					</TD>
					<TD>
						<s:property value="postcode" />
					</TD>
					<TD>
						<a href='address!edit.do?id=<s:property value="id"/>'><s:text
								name="button.edit" /> </a>
						<a href="address!delete.do?id=<s:property value="id"/>"><s:text
								name="button.delete" /> </a>
					</TD>
				</TR>
			</s:iterator>

这里使用了迭代器(iterator)来循环取出   value="pager.resultList"返回的一个容器类的实例中的结果,这个结果是一个对象,且这个对象有很多属性,假设返回的是一个Address对象,这个Address对象中有很多属性和方法
<s:property value="address" />

这就表示从这个Address对象中取出address方法,即调用这个对象的getAddress()方法,并将取到的值显示在这里

4.s:actionerror
  例子:
<s:actionerror />

输入action中保存的全局错误,action中保存的全局错误代码为:
saveActionError("address.message.edit.notexist");

如果一个jsp文件中有s:actionerror标签,则跳转到这个jsp文件的action的相应函数中一定使用了saveActionError方法

5.s:actionmessage
例子:
<s:actionmessage />

  对应的action中的相应方法的相应语句为:
 
saveActionMessage("address.message.delete.success");

解释同上

6.s:fielderror
  显示错误信息
  例子:
						<s:textfield name="name" maxlength="50" />
						<s:fielderror>
							<s:param>name</s:param>
						</s:fielderror>


对应的action中validate方法中对应代码为:
			if (name == null || name.equals("")) {
				addFieldError("name", getText("address.error.name"));
			}

标签中的<s:param>name</s:param>的参数name对应于方法addFieldError方法的第一个参数name

struts1 标签解释

1、bean:message
  例子:
<bean:message key="address.page.position" />

其中address.page.position为资源文件中的一个key所对应的属性值

2、html:errors
   例子:
<html:errors property="org.apache.struts.action.GLOBAL_MESSAGE" />

对应的java代码如下:
ActionMessages messages = new ActionMessages();
		AddressForm addressForm = (AddressForm) form;
		String username = getUsername(request);
		
		// check if exists
		boolean b = addressDAO.isExist(username, addressForm.getName());
		if (!b) {
			// insert object
			Address address = new Address();
			address.setUsername(username);
			address.setName(addressForm.getName());
			address.setSex(addressForm.getSex());
			address.setMobile(addressForm.getMobile());
			address.setEmail(addressForm.getEmail());
			address.setQq(addressForm.getQq());
			address.setCompany(addressForm.getCompany());
			address.setAddress(addressForm.getAddress());
			address.setPostcode(addressForm.getPostcode());
			addressDAO.insert(address);
			
			// save messages
			messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
					"address.message.add.success"));


3、logic:present
用法:<logic:present name="user">相当于if(request.getAttribute("user"!=null))
例子:
   
			<logic:present name="addressList">
				<logic:iterate id="address" name="addressList" scope="request">
					<TR>
						<TD>
							<bean:write name="address" property="name" scope="page" />
						</TD>
						<TD>
							<bean:write name="address" property="sex" scope="page" />
						</TD>
						<TD>
							<bean:write name="address" property="mobile" scope="page" />
						</TD>
						<TD>
							<bean:write name="address" property="email" scope="page" />
						</TD>
						<TD>
							<bean:write name="address" property="qq" scope="page" />
						</TD>
						<TD>
							<bean:write name="address" property="company" scope="page" />
						</TD>
						<TD>
							<bean:write name="address" property="address" scope="page" />
						</TD>
						<TD>
							<bean:write name="address" property="postcode" scope="page" />
						</TD>
						<TD>
							<a
								href='address_edit.do?method=edit&id=<bean:write name="address" property="id" scope="page"/>'><bean:message
									key="button.edit" /> </a>
							<a
								href="address.do?method=delete&id=<bean:write name="address" property="id" scope="page"/>"><bean:message
									key="button.delete" /> </a>
						</TD>
					</TR>
				</logic:iterate>
			</logic:present>


4、logic:iterate
   例子:
			<logic:present name="addressList">
				<logic:iterate id="address" name="addressList" scope="request">
					<TR>
						<TD>
							<bean:write name="address" property="name" scope="page" />
						</TD>
						<TD>
							<bean:write name="address" property="sex" scope="page" />
						</TD>
						<TD>
							<bean:write name="address" property="mobile" scope="page" />
						</TD>
						<TD>
							<bean:write name="address" property="email" scope="page" />
						</TD>
						<TD>
							<bean:write name="address" property="qq" scope="page" />
						</TD>
						<TD>
							<bean:write name="address" property="company" scope="page" />
						</TD>
						<TD>
							<bean:write name="address" property="address" scope="page" />
						</TD>
						<TD>
							<bean:write name="address" property="postcode" scope="page" />
						</TD>
						<TD>
							<a
								href='address_edit.do?method=edit&id=<bean:write name="address" property="id" scope="page"/>'><bean:message
									key="button.edit" /> </a>
							<a
								href="address.do?method=delete&id=<bean:write name="address" property="id" scope="page"/>"><bean:message
									key="button.delete" /> </a>
						</TD>
					</TR>
				</logic:iterate>
			</logic:present>
分享到:
评论

相关推荐

    struts2 自定义标签

    在Struts2中,自定义标签通常由Action类和结果页面共同完成,提供了一种声明式编程的方式,降低了视图与控制层的耦合度。 二、自定义标签的优点 1. 提高代码可读性:自定义标签将复杂的业务逻辑封装起来,使得HTML...

    struts2标签使用例子

    1. **Struts2核心标签库**: - `s:textfield`:用于创建输入字段,与Action中的属性绑定。 - `s:textarea`:生成多行文本输入框。 - `s:checkbox` 和 `s:radio`:用于创建复选框和单选按钮。 - `s:submit`:创建...

    struts1标签库详解

    Struts1 标签库详解 Struts1 标签库是 Apache Jakarta 的一个著名的开源项目,目标是为构建基于 Java 的 web 应用程序提供一个框架。Struts 提供了非常多的标签,依据功能和使用习惯的不同被分到了五个标签库中:...

    struts2标签库struts2标签库struts2标签库

    Struts2标签库是Struts2框架中的一个重要组件,它提供了一系列的标签,帮助开发者快速构建Web应用程序。在Struts2标签库中,标签可以分为UI标签和非UI标签两大类。UI标签用于生成HTML控件,如文本框、列表框、复选框...

    struts1和struts2的区别

    ### Struts1与Struts2的主要区别 #### 概述 Apache Struts 是一个用于构建企业级Java Web应用的开源框架。它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在...

    struts2标签的解释

    在Struts2中,标签库是其核心特性之一,它提供了一系列预定义的标签,使得开发者可以在JSP页面中更方便地处理业务逻辑和展示数据,减少了对Java脚本的依赖,提高了代码的可读性和可维护性。 **1. Struts2标签库概述...

    在Eclipse中配置Struts2项目(html)手把手教会你 +struts2 标签库介绍(html) + STRUTS2学习文档.pdf + Struts2―表单验证validate(html) + struts2和struts的比较 + struts教程(html)

    在Eclipse中配置Struts2项目(html)手把手教会你 如何在Eclipse中配置Struts2。 struts2 标签库介绍(html)对Struts2的标签做了详细的介绍让你轻松掌握Struts2的标签。 STRUTS2学习文档.pdf 对Struts2的一些配置...

    struts标签 struts标签 struts标签

    Struts标签是Apache Jakarta Struts框架中的一部分,用于简化Java Web应用程序开发中的视图层构建。Struts标签库提供了一组预定义的JSP标签,这些标签有助于开发者更有效地处理常见的Web开发任务,如表单处理、数据...

    struts2标签库例子

    Struts2 标签库详解 Struts2 提供了一个强大的标签库,用于简化 Web 应用程序的开发过程。这些标签可以分为两类:通用标签和 UI 标签。下面,我们将详细介绍 Struts2 标签库的使用。 4.1 通用标签 通用标签用来...

    Struts2 与数据标签

    Struts2_控制标签与数据标签.pdf

    Struts2自定义分页标签

    本资源详细介绍了如何在Struts2中自定义分页标签,使得开发过程更加便捷。 在Struts2中,分页通常涉及到以下几个关键步骤: 1. **创建Action类**:首先,你需要创建一个Action类,该类将处理用户的请求,包括获取...

    Struts2实例 国际化 类型转换 struts标签

    这个实例项目展示了如何在实际应用中结合Struts2、国际化、类型转换以及Struts2自定义标签来实现用户管理功能,包括用户数据的增删改查。 首先,我们来看Struts2的核心概念。Struts2作为MVC框架,它负责处理HTTP...

    Struts标签库 Struts 标签库

    Struts2框架中的标签库是基于JSP标准标签库(JSTL)的扩展,它提供了一系列与动作、结果、表单和国际化相关的标签。这些标签能够帮助开发者在页面上轻松地展现数据、处理表单提交、实现动态内容生成等。 2. **主要...

    Struts2常用标签

    首先,我们要明白Struts2标签库与Struts1.x的不同之处。在Struts1.x中,标签库按照功能划分为HTML、Tiles、Logic和Bean等几个部分。而Struts2则没有明确的分类,所有的标签都位于统一的URI命名空间"/struts-tags"下...

    Struts1标签库

    Struts1标签库是Java Web开发中的一种工具,主要用于简化基于MVC...虽然在现代Web开发中,Struts1可能已经不是首选,但它的设计理念和标签库的概念对理解和学习其他Web框架如Struts2、Spring MVC等有着重要的参考价值。

    struts1的标签

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

    Struts2标签与开发手册

    本手册详细介绍了Struts2中的各种标签及其在开发过程中的应用。 1. **简介** Struts2的标签库分为核心标签库、展示标签库、OGNL标签库等,它们提供了丰富的功能,如数据校验、国际化、条件判断、循环遍历等。这些...

    Struts2标签集锦(附Struts2标签详解word文档)

    在实际使用中,Struts2标签的灵活性和便利性体现在数据绑定上,它可以直接与Action类的属性进行交互,无需繁琐的EL表达式。例如,`&lt;s:textfield name="username"&gt;`会自动找到对应的Action中的`username`属性,并将...

    基于struts2 自定义标签 分页

    1. **创建自定义标签**:在Struts2中,自定义标签是通过实现`org.apache.struts2.views.jsp.TagSupport`接口来创建的。你需要创建一个Java类,继承这个接口,并实现相关方法。例如,你可以创建一个名为`PagingTag`的...

Global site tag (gtag.js) - Google Analytics