• form标签是struts2标签中一个重要标签:
  1. 可以生成html标签,使用起来和html的form标签差不多;
  2. Strut2的form标签会生成一个table,进行自动布局;
  3. 可以对表单提交的值进行回填:从栈顶对象开始配置属性,并把匹配的属性值赋到对应的标签value中,若栈顶对象没有对应的属性,则依次向下栈中找对应的属性。
  • 为什么form标签可以实现填充form表单?

示例:写一个这样的form页面,提交form页面后跳转到自身页面

form-tags.jsp页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><s:debug></s:debug><s:form action="formtags.action" method="post"><s:hidden name="userId" label="UserId"></s:hidden><s:textfield name="userName" label="UserName"></s:textfield><s:password name="password" label="Password"></s:password><s:submit name="submit" label="Submit"></s:submit></s:form>
</body>
</html>

struts.xml

<action name="formtags" class="com.dx.struts2.FormTagsAction" method="save"><result name="input">/form-tags.jsp</result></action>

FormTagsAction页面:

package com.dx.struts2;import com.opensymphony.xwork2.ActionContext;public class FormTagsAction {private String userId;private String userName;private String password;public String getUserId() {return userId;}public void setUserId(String userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String save() {System.out.println(this);FormTagsAction action=new FormTagsAction();action.setUserId("1001");action.setUserName("AAA");action.setPassword("pwd");ActionContext.getContext().getValueStack().push(action);return "input";}@Overridepublic String toString() {return "FormTagsAction [userId=" + userId + ", userName=" + userName + ", password=" + password + "]";}
}

在浏览器中输入http://localhost:8080/Struts_01/form-tags.jsp在form表单中输入username:bb,password:cc,点击提交按钮,会在后台控制台上输出响应信息:

"FormTagsAction [userId=, userName=bb, password=cc]" 

程序会自动跳转到form-tags.jsp页面自身,这是我们发现username被自动填充为AAA,这说明了form表单会自动填充是因为------form标签会从值栈中自动寻找与自身标签相匹配的属性值作为标签值。

  • s:checkbox复选框

用法:

<s:form action="formtags.action" method="post">        <s:checkbox name="married" label="Married"></s:checkbox><s:submit name="submit" label="Submit"></s:submit></s:form>

FormTagsAction.java中追加:属性private String married;实现set,get方法。

使用married字段来接收页面提交的参数。

需要注意点:s:checkbox生成的html比较特殊

<input type="checkbox" name="married" value="true" id="formtags_married"/><input type="hidden" id="__checkbox_formtags_married" name="__checkbox_married" value="true" /> <label for="formtags_married" class="checkboxLabel">Married</label> 

它生成了一个hidden标签,如果缺少了个标签:如果未选中married复选框时,后台代码就接收不了参数值。

  • s:radio、s:select(单选框),s:checkboxlist(复选框):

1、list,listKey,listValue这3个属性对radio,select,checkboxlist等标签非常重要;

2、可以把一个String,一个数据,一个Enumeration,Iterator,Map或Collection赋值给list属性。

form-tags.jsp

        <s:radio list="#{'0':'male','1':'famel' }" name="gender" label="Gender"></s:radio><%List<City> cities=new ArrayList<City>();cities.add(new City(1001,"City1"));cities.add(new City(1002,"City2"));cities.add(new City(1003,"City3"));cities.add(new City(1004,"City4"));request.setAttribute("cities", cities);%><s:checkboxlist list="#request.cities" listKey="cityId" listValue="cityName" name="cities" label="City"></s:checkboxlist><s:select list="#{10:10,20:20,30:30,40:40,50:50}" label="Age" name="age" headerKey="" headerValue="please select ..."><s:optgroup label="11-19" list="#{11:11,12:12,13:13,14:14,15:15,16:16,17:17,18:18,19:19 }"></s:optgroup>    <s:optgroup label="11-19" list="#{21:21,22:22,23:23,24:24,25:25,26:26,27:27,28:28,29:29 }"></s:optgroup>        </s:select>

需要注意事项:如果后台要接受参数checkboxlist后台类型不能是数据,否则接收参数会失败,需要是List类型最好。

s:select第一个例子:

<s:select list="{'aa','bb','cc'}" theme="simple" headerKey="00" headerValue="00"></s:select>

s:select第二个例子:

<s:select list="#{1:'aa',2:'bb',3:'cc'}"  label="abc" listKey="key" listValue="value"  headerKey="0" headerValue="aabb">

s:select第三个例子:

< %
Java.util.HashMap map = new java.util.LinkedHashMap();
map.put(1,"aaa");
map.put(2,"bbb");
map.put(3,"ccc");
request.setAttribute("map",map);
request.setAttribute("aa","2");
%>
< s:select list="#request.map"  label="abc" listKey="key" listValue="value"
value="#request.aa"  headerKey="0" headerValue="aabb"></
s:select
>
headerKey headerValue 为设置缺省值
摘抄自 http://www.cnblogs.com/modou/articles/1326683.html

s:select第四个例子

public class Program implements Serializable {private static final long serialVersionUID = 1L;private int programid;private String programName;public int getProgramid() {return programid;}public void setProgramid(int programid) {this.programid = programid;}public String getProgramName() {return programName;}public void setProgramName(String programName) {this.programName = programName;}
}在 xxx  extends ActionSupport {private  List<Program> programs ;public List<Program> getPrograms() {return programs;}public void setPrograms(List<Program> programs) {this.programs = programs;}private MyBean bean;public MyBean getBean(){return bean;}public void setBean(MyBean bean){this.bean=bean;}
}

在jsp页面

<s:select list="programs"  listValue="programName" listKey="programid"  name="program" id="program" headerKey="0l" headerValue=" "   value="bean.programid">

</s:select>  
红色部分为在action里面的list,黄色为<option value="xxx">value</option>对应bean里面的字段programName

绿色部分为<option value="xxx",对应bean里面的字段programid

紫色部分为设定select被选中的值,s:select 会自动在bean选中key对应的值

转载于:https://www.cnblogs.com/yy3b2007com/p/6602621.html

Struts(十四):通用标签-form表单相关推荐

  1. flask基础十四之wtf表单

    Web表单 Web 表单是 Web 应用程序的基本功能. 它是HTML页面中负责数据采集的部件.表单有三个部分组成:表单标签.表单域.表单按钮.表单允许用户输入数据,负责HTML页面数据采集,通过表单 ...

  2. iView学习笔记(四):Form表单操作

    1.后端准备 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django项目,在项目中新建app,配置好数据库 2.后端代码(基于C ...

  3. form表单的提交方式

    form表单提交方式总结一下: 一.利用submit按钮实现提交,当点击submit按钮时,触发onclick事件,由JavaScript里函数判断输入内容是否为空,如果为空,返回false, 不提交 ...

  4. android中怎么保存checkbox中的checked属性_第二十四天HTML中的form表单

    form表单 用于收集用户信息,如:登录.注册等场景:所有要提交的数据都必须放在form标签中 action:提交地址.动作,与input标签中typy标签的submit属性相关联. ,提交地址是ac ...

  5. 四种参数传递的形式——URL,超链接,js,form表单

    什么时候用GET,  查,删 什么时候用POST,增,改  (特列:登陆用Post,因为不能让用户名和密码显示在URL上) 4种get传参方式 ? 1 2 3 4 5 6 7 8 9 10 11 12 ...

  6. ExtJs 备忘录(4)—— Form表单(四) [ 数据提交 ]

    一.截图和示例共用Ext.FormPanel 1.1 截图 由于本文主要关注的是表单提交的几种方式,所以仅用了一个表单项以便于测试和减少示例代码. 1.2 示例共用Ext.FormPanel      ...

  7. 天河微信小程序入门《四》:融会贯通,form表单提交数据库

    天河在阔别了十几天之后终于又回来了.其实这篇文章里的demo是接着(天河微信小程序入门<三>)后面就做了的,但是因为最近在做别的项目,所以就偷懒没有发出来.放到今天来看,从前台提交数据到数 ...

  8. java ajax提交form表单提交_form表单AJAX提交(四种方法)

    一.AJAX的 form表单提交 1.第一种: 序列化提交$('#form').serialize() 前台: $.ajax({ url: "", type: "post ...

  9. form表单AJAX提交(四种方法)

    一.AJAX的 form表单提交 1.第一种: 序列化提交 $('#form').serialize() 前台: $.ajax({url: "",type: "post& ...

最新文章

  1. anaconda下安装ffmpeg
  2. 10备忘录没有表格_iPhone的【备忘录】竟然有这么多功能
  3. WebRTC大会火爆上演,网易云信谈音视频研发三大突破点
  4. boost::hana::when用法的测试程序
  5. php + mssql乱码
  6. win7录制系统声音 加入立体声混音 camtasia recorder录屏
  7. WPF中的触发器(Trigger)
  8. 【ubuntu】ubuntu下用make编译程序报错找不到openssl/conf.h
  9. Java 1.1.8 构建字符串
  10. 电机学第一章(磁路的基本定律)
  11. C0型单元刚度矩阵的性质
  12. 牛人之所以牛,在于思维方式超越了…
  13. aardio怎么运行php,aardio
  14. [自编码器:理论+代码]:自编码器、栈式自编码器、欠完备自编码器、稀疏自编码器、去噪自编码器、卷积自编码器
  15. DH ERP系统权限设计
  16. java中的 |=(位或运算符)、=(位与运算符)、^=(位异或运算)、~=(位非运算符)
  17. 2011年正月初6学校初六补课,还要170元补课费
  18. 解决华硕飞行堡垒8开机蓝屏问题
  19. 微软共同创办人保罗艾伦逝世,终年65岁
  20. uniapp 中APP使用微信授权登录完整总结

热门文章

  1. axis2生成客户端代码_利用ApiPost一键、快速生成接口文档!女猿也过38节!
  2. java 正则表达式 Matcher
  3. python `__repr__`
  4. 16 The Terminal and Job Control
  5. java Hibernate
  6. Oracle union多表查询
  7. python安装wx模板_windows下wxPython开发环境安装与配置方法
  8. 如何使用 vCenter 警报自动监控 VSAN 组件阈值?
  9. 华为2288hv5服务器安装ESXI 6.7(三):安装ESXI(转)
  10. Spring Cloud与微服务学习总结(10)——Spring Cloud 常见优化项的总结