Struts1的html标签主要是为了绘制HTML页面标签元素,通过与Struts1框架的集成,增强功能

首先,在使用前,需要引入tld文件

<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %>

标签详细讲解

  html:link  对应<a>标签

  首次打开,会自动生成jsessionid,如果浏览器支持cookie,会自动将jsessionid添加到cookie中,下次访问不会再次添加jsessionid了,jsessionid相当于session的一个标志。用于会话跟踪

  能够对参数进行url编码,并且自动为请求添加请求后缀,如.do,.action等

       <%
Map<String,String> parMap = new HashMap<>();
parMap.put("x","1");
parMap.put("y","2");
parMap.put("z","3");
request.setAttribute("parMap",parMap);
Date now = new Date();
request.setAttribute("now",now);
request.setAttribute("name","张三李四咯");
%>
<%--参数名为username,从web作用域中查找名为name的值--%>
<html:link action="/regUser" paramId="username" paramName="name">注册 - 对参数URL编码</html:link><br/>
<html:link action="/regUser" paramId="t" paramName="now" paramProperty="time">对象的某个属性作为参数</html:link><br/>
<html:link action="/regUser" name="parMap">Web作用域中的Map作为参数集合</html:link><br/>
如果需要设置的请求参数是某个对象的Map类型成员变量,则可以使用 name+property两个属性进行设置
对于生成的请求地址,会自动添加项目名与请求后缀
例如:<html:link action="/regUser">注册</html:link>

  html:select         对应 select标签

  html:option        生成一个option元素

  html:options        生成多个option标签

  html:optionsCollection  生成多个option标签

    <html:select property="regUser.gender">
<c:forEach items="${requestScope.genders}" var="genderAttr">
<!-- 因为html:option只能生成一个下拉框,所以需要迭代 -->
<html:option value="${genderAttr.value}" key="${genderAttr.key}"/>
</c:forEach>
</html:select> <html:select property="regUser.gender">
<html:options collection="genders" labelProperty="value" property="key"/>
</html:select> <html:select property="regUser.gender">
<html:optionsCollection name="genders" label="value" value="key"/>
</html:select>
说明:regUser.gender 表示提交的请求中接收参数的变量;genders是上一个Action中传递过来的下拉列表对象;value用于显示;
key作为传递值 value与key是不固定的。都是genders集合对象中的变量

对于html:options,还有一种用法

<%

    List colorList = new ArrayList();

    colorList.add(new LabelValueBean("Red", "1");

    colorList.add(new LabelValueBean("Blue", "2");

%>

<html:select property="testProperty">

    <html:options collection="colorList" property="label" labelProperty="value"/>

</html:select>

  html:rewrite  生成一个指向Action的请求地址,自动添加请求后缀与项目名称地址

    <form action="<html:rewrite action='/regUser'/> " method="post">
等价于
<form action="${pageContext.request.contextPath}/regUser.do" method="post">

  html:submit  表单提交按钮

属性指定鼠标上移提示信息,bean:message指定按钮上的文字,都实现了国际化
<html:submit titleKey="info.submit" bundle="message">
<bean:message bundle="message" key="info.submit"/>
</html:submit>

  html:error  错误信息的输出

  

    <html:errors /><br/><!-- 输出全部ActionErrors信息 -->
<html:errors property="username"/><!-- 输出指定key的错误信息,注意这里的key不是资源包中的key -->
其实所谓的输出错误信息,就是从 web 作用域中获取 键 为
public static final String ERROR_KEY = "org.apache.struts.action.ERROR";
的数据

  html:message  输出普通信息

public static final String MESSAGE_KEY = "org.apache.struts.action.ACTION_MESSAGE"; 获取Web作用域中此 键 对应的值

  html:form  生成表单

Action属性值会自动添加项目名与请求后缀

  html:text  表单文本输入域

<html:text property="regUser.username"/>

  html:password  表单密码输入

<html:password property="regUser.password" value=""/>

  html:cancel  取消

<html:cancel>取消</html:cancel>    

  html:checkbox  一个选择框

java:private boolean autoLogin;
jsp:<html:checkbox property="autoLogin">两周内自动登录?</html:checkbox>
注意在ActionForm中使用reset方法将autoLogin初始化为false
之所以要这么做,是因为如果未对复选框进行勾选,默认并不是传递false,而是传递原先的值。这就导致永远为true,所以需要reset为false
如果ActionForm的作用域是request,则可以不reset,因为每次请求都是一个新的FormBean

  html:multibox  复选框

    与checkbox的区别在于,checkbox对应的是JavaBean中的boolean类型,multibox对应的是JavaBean中的String[]类型
一般,如果需要接收的参数是一个布尔值类型,会使用html:checkbox,如果需要接收的参数是一组数据,就会采用html:multibox
<html:multibox property="regUser.specialities"/>
两种复选框标签都有回显功能
一般会使用循环迭代生成一组复选框标签
<c:forEach items="${requestScope.specialities}" var="att">
<html:multibox property="regUser.specialities" value="${att.id}"/>${att.value}
</c:forEach>

  

最新文章

  1. 数据结构《20》----Immutable stack
  2. 如何制定tomcat部署时自己定义的docBase路径
  3. SQL存储过程的调用及写法
  4. jwt refresh token
  5. Matlab位运算操作
  6. [转载]浅析Java中的final关键字
  7. SQLServer 2008数据库查看死锁、堵塞的SQL语句
  8. Hadoop2以来的历次升级(不含2.2.0及以下)
  9. 魔方公式xyz
  10. a:hover span 隐藏/显示 问题
  11. Android 怎样在linux kernel 中读写文件
  12. java定义和实现接口
  13. malloc函数的一种简单的原理性实现
  14. 移动端雪碧图sprite的实现
  15. Easyloggingpp的使用
  16. CenOS下搭建PPTP服务
  17. 生成本地测试用https证书,支持通配符和多域名,初学OpenSSL
  18. 如何让Fiddler可以抓取https的请求
  19. javascript的节点的概念
  20. Sql语句在SqlServer中创建数据库、表格并添加约束

热门文章

  1. 【前行】◇第3站◇ 国庆训练营&#183;OI制模拟赛
  2. ubuntu多版本php切换
  3. 什么是token及怎样生成token
  4. 【转载】在C#中主线程和子线程如何实现互相传递数据
  5. linux wdcp3 上传大文件 服务器i/o错误
  6. 用友二次开发之科脉TOT3凭证接口
  7. Spark知识点
  8. ubuntu64位运行32位程序
  9. 永无BUG 注释
  10. 使用pyinstaller将Python打包为exe文件