Strus 2的新表单标志的使用
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>
相关推荐
nercon 2020-07-26
WangJiangNan 2020-01-07
typhoonpython 2019-11-03
renpinghao 2019-11-03
谷歌架构师 2016-04-15
tztzyzyz 2020-07-20
nercon 2020-07-16
hzyuhz 2020-06-28
xustart0 2020-06-14
YAruli 2020-06-13
Kakoola 2020-05-17
ThinkingLink 2020-05-16
85443563 2020-04-30
xcguoyu 2020-03-04
somboy 2020-03-03
Elements小帅 2020-01-16