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>

  

相关推荐