1.非表单标签主要用于在页面生成一些非表单的可视化元素,例如Tab页面,输出HTML页面的树形结构等。当然,非表单标签也包含在页面显示Action里封装的信息,非表单标签主要有如下几个:
a:生成一个超级连接(link)。
actionerror:如果Action实例的getActionError()方法返回不为null,则该标签负责输出该方法返回的系列错误。
actionmessage:如果Action实例的getActionMessage()方法返回不为null,则该标签负责输出该方法返回的系列消息。
component:使用此标签可以生成一个自定义组件。
div:此标签负责生成一个div片段。
fielderror:如果Action实例存在表单域的类型转换错误、校验错误、该标签负责输出这些提示信息。
tabbedPanel:生成HTML页面的Tab页。
tree:生成一个树形结构。
treenode:生成树形结构的节点。
2.下面,使用上面列出比较常用的非表单标签:
(1).actionerror和actionmessage标签:这两个标签用法完全一样,作用也几乎完全一样,都是负责输出Action实例里封装的信息,区别是actionerror标签负责输出Action实例的getActionError()方法的返回值,而actionmessage标签负责输出Action实例的getActionMessage()方法的返回值。这两个标签没有其专有的属性,所以使用起来挺简单的。
接下来对actionerror和actionmessage标签附上一个例子,首先,新建一个Struts2项目,项目名为MessageTest,新建一个MessageAction类。代码如下:
package com.gk.action;
import com.opensymphony.xwork2.ActionSupport;
public class MessageAction extends ActionSupport {
public String execute() throws Exception {
addActionMessage("第一个action一般消息");
addActionMessage("第二个action一般消息");
addActionError("第一个action错误消息");
addActionError("第二个action错误消息");
addFieldError("field1", "第一个字段错误消息");
addFieldError("field2", "第二个字段错误消息");
return SUCCESS;
}
}
接着打开struts.xml文件,对Action进行配置,代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<constant name="struts.devMode" value="true"></constant>
<package name="message" namespace="/" extends="struts-default">
<action name="message" class="com.gk.action.MessageAction">
<result>/message.jsp</result>
</action>
</package>
</struts>
新建一个message.jsp页面,代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'message.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
输出Action一般性消息:<s:actionmessage/><br/>
输出Action错误消息:<s:actionerror/><br/>
输出字段错误消息:<s:fielderror></s:fielderror><br/>
</body>
</html>
然后部署此项目到Tomcat服务器,开启Tomcat服务器,输入相应的地址后,效果如下:
(2).component标签:此标签用于使用自己的自定义组件,这是一个非常灵活的用法,如果经常需要使用某个效果片段,就可以考虑将这个效果片段定义成一个自定义组件,然后在页面中使用component标签来使用该自定义组件。
因为使用自定义组件还是基于主题,模板管理的,因此在使用component标签时,常常需要指定如下三个属性:
~ theme:自定义组件所使用的主题,如果不指定该属性,默认使用xhtml主题。
~ templateDir:指定自定义组件的主题目录。如果不指定,默认使用系统的主题目录,即template目录。
~ template:指定自定义组件所使用的模板。
注:除此之外,还可以在cmponent标签内使用param子标签,子标签表示向该标签模板中传入额外的参数。如果希望在模板中取得该参数,总是采用如下形式:
$parameters.paramname,或者$parameters['paramname']。
提示:自定义的模板文件可以采用FreeMarker、JSP和Velocity三种技术来书写。
3.以上内容仅供大家学习参考,谢谢!