Strus 2的新表单标志的使用
Struts 2为大家提供了不少常用的很酷的表单标志,简化了我们程序员的工作。不过,由于这些都是新标志,大家可能在使用上还存在不少疑问表单标志使用小技巧Struts 2的表单标志在输出(render)HTML时,使用了模板的概念,增加了复杂性(因为它不像Struts 1.x的表单标志,它通常都是一个标志对应HTML的一个元素),因此大家在使用时,需要一些技巧:
1.Struts 2的UI标志的表单标志默认是以表格布局,按钮是右对齐的。如果你不喜欢此风格,你可以简单地将<s:form />标志的“theme”属性设为“simple”,然后用以往的做法自已布局表单元素(注意:此法有利有弊,弊就是当你将“theme”属性设为“simple”时,表单标志以最简单方式输出HTML,所以你可能失去一些默认输出提供的便利,如:友好的错误信息的显示,或客户端的表单验证等)。当然更好的做法是通过CSS或自定义主题(theme)然后应用到整个应用程序,这样可以获得一致的页面风格,加强用户体验(我会在以后的文章对此进行讲解);
2.当你在页面上加入某些标志(如:<s:doubleselect />等)时,应该通过action来访问页面,而不是通过*.jsp的URL直接访问。
下面我将分别对这些标志进行讲述:
下面做个简单的案例:
<%@ 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 'reg.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>
<div align="center">
<div>
<h1>注册页面</h1>
<div>
<!-- form表单 -->
<s:form theme="xhtml" action="insert" namespace="/csdn">
<!--名称-->
<s:textfield name="user.name" key="user.name" tooltip="请输入名称"
tooltipDelay="5000" ></s:textfield>
<!--密码-->
<s:password name="user.pass" key="user.pass"></s:password>
<s:password name="user.cpass" key="user.cpass"></s:password>
<!-- 性别 -->
<s:radio name="user.sex" list="{'男','女'}" value="'男'"
key="user.sex"></s:radio>
<!--学历 -->
<s:select list="{'博士','硕士','本科','大专','中专','高中'}"
name="user.education" key="user.education" value="'本科'">
</s:select>
<!-- 邮箱 -->
<s:textfield name="user.email" key="user.email"></s:textfield>
<!-- 地址 -->
<s:doubleselect doubleList="top=='北京'?{'海淀','朝阳'}:{'保定','石家
庄'}" list="{'北京','河北'}" doubleName="state" key="user.city"
name="user.city"></s:doubleselect>
<!-- 出生日期 -->
<s:textfield name="user.birth" key="user.birth"></s:textfield>
<!-- 用户爱好 -->
<s:checkboxlist name="user.favs" list="#{1:'打篮球',2:'排球',3:'足球'}"
listKey="key" listValue="value" key="user.favs"></s:checkboxlist>
<!-- 用户介绍 -->
<s:textarea cols="18" rows="10" name="user.intro" key="user.intro">
</s:textarea>
<!-- 提交文本 -->
<s:submit key="submit"></s:submit>
</s:form>
<!-- 这个标志可能大家不常用,不过本人认为它还是挺有用的。在使用Struts 1.x时
,
因为跳转通常是用Forward(而不是Redirect)实现的,
所以当用户完成请求后,按“F5”刷新页面时,就会重新提交上次的请
求,这样经常会出错。
要解决这个问题,<s:token />可以帮你忙。
-->
<s:token></s:token>
</div>
</div>
</div>
</body>
</html>
本文介绍了Struts2表单标志的使用技巧,包括如何调整表单布局、使用自定义主题增强用户体验,以及如何正确使用特定标志避免直接访问页面等问题。通过实际案例展示了常见表单元素的配置方法。
389

被折叠的 条评论
为什么被折叠?



