• 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";
} @Override
public 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对应的值

Struts(十四):通用标签-form表单的更多相关文章

  1. FastAPI 学习之路(十六)Form表单

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  2. Spring MVC(十四)--SpringMVC验证表单

    在Spring MVC中提供了验证器可以进行服务端校验,所有的验证都必须先注册校验器,不过校验器也是Spring MVC自动加载的,在使用Spring MVC校验器之前首先要下载相关的jar包,下面是 ...

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

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

  4. 五十四:WTForms表单验证之自定义表单验证器

    如果想要对表单中的某个字段进行自定义验证,则需要对这个字段进行单独的验证1.定义一个方法,命名规则为:validate_字段名(self, filed)2.在方法中,使用filed.data获取字段的 ...

  5. Form表单提交数据的几种方式

    一.submit提交 在form标签中添加Action(提交的地址)和method(post),且有一个submit按钮(<input type='submit'>)就可以进行数据的提交, ...

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

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

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

    什么时候用GET,  查,删, 什么时候用POST,增,改  (特列:登陆用Post,因为不能让用户名和密码显示在URL上) 4种get传参方式 <html xmlns="http:/ ...

  8. 6.form表单四种提交方式

    一.使用jquery的ajax方式提交: 二.使用easyui的form组件内置的submit方法提交: 三.先定义表单,然后使用submit方法提交: 四.先定义表单,然后按下enter键时提交:

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

    什么时候用GET,  查,删 什么时候用POST,增,改  (特列:登陆用Post,因为不能让用户名和密码显示在URL上) 4种get传参方式 <html xmlns="http:// ...

随机推荐

  1. Greetings

    1,Common English Greetings Hey! Hey man! Hey girl! Hi. How's it going? How are you doing? What's up? ...

  2. spring jpa 自定义查询数据库的某个字段

    spring jpa 提供的查询很强大, 就看你会不会用了. 先上代码, 后面在解释吧 1. 想查单个表的某个字段 在repository中 @Query(value = "select i ...

  3. 【Python】 如何用pyinstaller打包python程序成exe

    [pyinstaller] pyinstaller在他们的官方网站上下载:http://www.pyinstaller.org/ 下载完pyinstaller之后还要安装一个支持包pywin32. 这 ...

  4. redis的主从复制(读写分离)/哨兵(主从切换)配置

    准备两个redis服务,两台机器,依次命名文件夹子master,slave1 10.10.10.7 10.10.10.8 1.master修改配置文件 [root@db2 conf]# cat 637 ...

  5. [15单片机] STC15F104W开发入门及模拟串口程序

    STC15F104W开发入门及模拟串口程序 Saturday, 31. March 2018 09:42AM - beautifulzzzz 前言 最近找到一款51内核的SOP8封装的8脚单片机STC ...

  6. 一个非常标准的连接Mysql数据库的示例代码

    一.About Mysql 1.Mysql 优点 体积小.速度快.开放源码.免费 一般中小型网站的开发都选择 MySQL ,最流行的关系型数据库 LAMP / LNMP Linux作为操作系统 Apa ...

  7. Ditto在教学上的应用

    Ditto在教学上的应用 我喜欢iOS和macOS生态的一个原因是,你在iphone上看到一段好文字,复制一下,到macbook中粘贴一下就可以了,这体验太爽了. 大家可能相信大家都听过这样一则笑话: ...

  8. 201621123031 《Java程序设计》第7周学习总结

    作业07-Java GUI编程 1.本周学习总结 1.1 思维导图:Java图形界面总结 1.2 可选:使用常规方法总结其他上课内容. 事件监听器: Java事件监听器是由事件类和监听接口组成,自定义 ...

  9. 用python实现简单购物车功能

    all_asset = 0 i1 = input("请输入总资产:") all_asset = int(i1) goods = [ {'name':'电脑','price':199 ...

  10. es6+react.js组件入门初探

    React是一个用于构建用户见面的javascript库. React主要用于构建UI,许多人认为React是MVC中的V(视图) React起源于Facebook的内部项目,用来架设Instagra ...