struts(4)-----html标签

本文详细介绍了Struts标签库中的link、error和form等常用标签的功能及使用方法,包括如何利用这些标签简化视图层代码编写,实现表单验证、数据回显等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用struts可以简化view层的代码编写,其使用的是struts taglib包下的html标签。常用的html标签有:

        link标签

其功能相当于<a href="" />标签,它有一些属性,常用的有action, paramId, paramName,paramProperty;其中action标签是指定跳转页面,paramId是构建URL是,附加的相关参数,paramName是附加参数的值, paramProperty是指用paramName指定的对象的某个属性的值来封装这个paramId指定的参数,下面是几个例子:

如:

<html:link action="/Register" paramId="name" paramName="name">注册</html:link>
它相当于 <ahref="/Struts1_1/Register.do?name=%E4%B8%AD%E5%9B%BD">注册</a>,其中paramId和paramName值是经过了URL编码的。需注意的是,paramName是存在request域中的属性,html:link标签中指定paramName属性相当于request.getAttribute("name"); 

<%
     	Date date = new Date();
     	request.setAttribute("date", date);
     	
      %>
      <html:link action="/Register" paramId="date" paramName="date" paramProperty="time">注册</html:link>
上例中就是用date对象的time属性来给date参数赋值。其解析成html代码如下:

<ahref="/Struts1_1/Register.do?date=1394346905108">注册</a>

       另外,它会自动加上contextPath路径,并且加上jsessionid进行url编码重写。

link标签的name属性,name 指定的bean属性是一个map集合,在link标签中指定该属性时,它会自动将name指定的map属性中的每个记录取出并重写URL。如下:

<%	
        Map map = new HashMap();
    	map.put("aaa", "china");
    	map.put("bbb", "beijing");
    	map.put("ccc", "guangdong");
    	request.setAttribute("map", map);
     %>
<html:link action="/Register" name="map">注册</html:link>
解析后,相当于:

<a href="/Struts1_1/Register.do?%E5%9C%B0%E5%90%8D=%E5%8C%97%E4%BA%AC&aaa=china&bbb=beijing">注册</a>

      error标签

html标签库的error标签,常用来返回错误信息,如表单提交是的验证信息。error标签指定的错误显示信息是以org.apache.struts.action.ERROR为属性名存入到request域中,它存入的是一个ActionError对象,它是ActionMessages的子类,其封装了很多条actionMessage消息,每条actionMessage都是以一个property存入到ActionMessages对象中的,这个属性一般为表单的name值。取出每条actionMessage时,可以通过指定property来取出对应的那条记录,也可以取出全部的actionMessages中的所有actionMessage。

创建actionMessage对象时,可以通过指定其配置的消息是否从MessageResource中来取还是直接在创建actionMessage对象时指定其错误显示内容,可以通过actionMessage(String key, boolean resource)构造函数来指定。一般为了是错误消息显示符合国际化,都是通过在资源文件中配置对应的错误消息,这个错误消息可以通过构造函数的key值作为key进行检索。要是配置从资源文件中来获取错误信息,还要在struts-config.xml中配置一个<Message-Resource>标签,通过此标签的paramter属性来指定资源文件的位置。如:

<message-resources parameter="cn.itcast.resource.MessageResource" ></message-resources>

下面是一个使用error标签来显示表单校验失败信息显示的例子:

<form action="${pageContext.request.contextPath }/Register.do" method="post">
    	用户名:<input type="text" name="name" /> <html:errors property="name"/><br />
    	密码: <input type="password" name="password" /><html:errors property="password"/><br />
    	邮箱: <input type="text" name="emails" /> <html:errors property="emails"/><br />
    
    	<input type="submit" value="注册" /> 
     </form>
表单校验validator中给校验失败的表项赋错误提示信息

public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		
		ActionErrors ae = new ActionErrors();
		ActionMessages amessage = new ActionMessages();
		if(name.equals("")){
			amessage.add("name", new ActionMessage("用户名不能为空", false));
		}
		if(password.equals("")){
			amessage.add("password", new ActionMessage("密码不能为空", false));
		}
		if(emails.equals("")){
			amessage.add("emails", new ActionMessage("邮箱不能为空", false));
		}
		
		ae.add(amessage);
		return ae;
	}
通常都是使用资源文件进行配置错误显示信息,这是在new ActionMessage时,第二个参数应设置为true,下面是例子:

public ActionErrors validate(ActionMapping mapping,
			HttpServletRequest request) {
		
		ActionErrors ae = new ActionErrors();
		ActionMessages amessage = new ActionMessages();
		
		MessageResources ms = MessageResources.getMessageResources("cn.itcast.resource.MessageResource");
		String replace = ms.getMessage("promt.empty");
		
		if(name.equals("")){
			amessage.add("name", new ActionMessage("promt.name", replace));
		}
		if(password.equals("")){
			amessage.add("password", new ActionMessage("promt.password", replace));
		}
		if(emails.equals("")){
			amessage.add("emails", new ActionMessage("promt.emails", replace));
		}
		
		ae.add(amessage);
		return ae;
	}
配置文件如下所示:

promt.empty=不能为空

promt.password=密码{0}

promt.emails=邮箱{0}

promt.empty=不能为空

form标签

<html:form>标签,此标签在会将封装好的数据的FormBean对象以key值为org.apache.struts.taglib.html.BEAN存入到pageContext域中;同时可以不用编写contexPath路径。此标签通常和<html:text>等标签一起使用

下面还有其他几种常用标签:

<html:text property="xx" />此标签相当于<input type="text" name="xx"  value="***"/>标签,同时还具有表单数据回显功能,起源将会从pageContext域中,以key值为org.apache.struts.taglib.html.BEAN取出对应的FormBean对象,并根据此对象获取指定的属性值,要是有,将会将其值传给value属性,进行显示。

<html:password property="xxx" redisplay="false"/> 此标签相当于<input type="password" name="xxx" >它的回显原理和上<html:text >标签是一致的,其中redisplay可以指定password标签的内容是否需要回显。

<html:radio property="xxx" > 此标签相当于,<input type="radio" name="xxx" />,和上面一样,也具有回显功能,原理类似。

<html:select property="xxx"> 此标签结合<html:option>标签来使用

       <html:textarea>标签,相当于<textarea>标签

        <html:file>标签

<html:button>标签

<html:img> <html:link> <html:frame>标签, 相比于HTML页面中的对应标签,其不同之处在于,如果客户端浏览器不支持Cookie,会对URL进行重写,以便Struts中使用Session功能。

<html:rewrite />相当于重写地址,如果以"/"开头,会附带上contextPath地址,如果浏览器不支持Cookie,还会重写URL。

由于html标签与struts紧密地结合在一起,html标签会根据Form Bean属性值,地址栏参数等自动设定,显示初始值。因此,可以通过在action中指定Form Bean属性值来操作JSP页面,即可用通过Controller层来完全控制view层数据显示。

如下代码:

public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		// TODO Auto-generated method stub
		
		UserFormBean ufb = (UserFormBean)form;
		ufb.setUsername("zhangshan");
		ufb.setCity("beijing");
		ufb.setGender("male");
		
		
		
		request.setAttribute("message", "注册成功!!!");
		return mapping.getInputForward();
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值