复选框和Struts2后台交互代码详解

 更新时间:2018年02月07日 11:39:45   作者:lavimer  
这篇文章主要介绍了复选框和Struts2后台交互代码详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

本文研究的主要是Struts框架中复选框的相关内容。复选框在web开发中用的非常广泛,具体介绍如下。

案例

如下图,当前为用户选中的水果为"香蕉",点击按钮,跳转到修改界面进行修改。

跳转到修改界面后要回显用户的选择(香蕉),然后由用户再次进行勾选,如图:

前台界面:

<body> 
 <form action="checBoxAction_test.action" method="post"> 
 请选择您喜欢的水果:<br> 
 <input type="checkbox" name="fruits" value="香蕉"/>香蕉 
 <input type="checkbox" name="fruits" value="雪梨"/>雪梨 
 <input type="checkbox" name="fruits" value="西瓜"/>西瓜</br> 
  
 <input type="submit" value="跳转到修改界面进行修改"> 
 </form> 
 </body> 

后台ChecBoxAction.java代码:

public class ChecBoxAction extends ActionSupport {
	private static final long serialVersionUID = 1L;
	/*前台通过复选框选中的水果名称*/
	private String fruits;
	public String getFruits() {
		return fruits;
	}
	public void setFruits(String fruits) {
		this.fruits = fruits;
	}
	public String test(){
		/*没去除空格之前*/
		System.out.println(this.getFruits());
		/*获取从前台穿过来的字符串(注:这里必须去除空格,因为传过来的每个值之间除了有逗号分隔符之外还都有空格,但是通过trim()的方式是去不掉空格的)*/
		//String fruitStr = this.getFruits().trim(); 
		/*必须如是这般才能去掉空格*/
		String fruitStr = this.getFruits().replaceAll(" ", "");
		System.out.println("去除空格之后的字符串:" + fruitStr);
		/*把字符串通过逗号分隔为一个字符串数组*/
		String[] fruit = fruitStr.split(",");
		/*遍历所有的值,把它们存到一个集合中*/
		List<String> myFruits = new ArrayList<String>();
		for (int i=0; i<fruit.length; i++){
			myFruits.add(fruit[i]);
		}
		/*把用户选中的复选框存到Map中发送到前台*/
		ActionContext.getContext().put("myFruits", myFruits);
		/*模拟从数据库中查出所有的值,在前台展示,然后和用户选中的进行匹配*/
		List<String> list = new ArrayList<String>();
		list.add("香蕉");
		list.add("雪梨");
		list.add("西瓜");
		ActionContext.getContext().put("list", list);
		return this.SUCCESS;
	}
}

注:复选框向后台传值,传过去的是一个字符串,且带有空格,所以必须去除空格,但是用trim()方法是去除不了的,使用trim()方法之后的效果。如下:

如图,毫无效果!但是,我们可以使用replaceAll()方法,去替代空格,效果如下:

另外为了在修改界面展示所有的复选框(水果),我们在Action中模拟从数据库中取出所有的值,然后和用户选择的复选框一起传到修改界面。

修改界面:

<body> 
 <form action="checBoxAction_test.action" method="post"> 
  您选择的水果:<br> 
  <c:forEach items="${list}" var="list"> 
   
  <input type="checkbox" value="${list}"  
    <c:forEach items="${myFruits}" var="fr"> 
      ${fr == list ? "checked" : ""} 
    </c:forEach>  
  />${list} 
   
  </c:forEach> 
   
 </br> <input type="submit" value="修改"/> 
  </form> 
 </body> 

注:修改界面比较复杂,首先是遍历所有复选框(水果),在每个浮选中又使用一个forEach循环,去遍历用户选择的所有复选框(水果),然后通过三目运算符去判断当前复选框是否被用户选中,如果匹配,就勾选。

总结

以上就是本文关于复选框和Struts2后台交互代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • java实现图片裁切的工具类实例

    java实现图片裁切的工具类实例

    这篇文章主要介绍了java实现图片裁切的工具类实例,涉及Java针对图片的读取、修改等相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Java Spring注解之@Async的基本用法和示例

    Java Spring注解之@Async的基本用法和示例

    Spring为任务调度与异步方法执行提供了注解支持,通过在方法上设置@Async注解,可使得方法被异步调用,下面这篇文章主要给大家介绍了关于Java Spring注解之@Async的基本用法和示例,需要的朋友可以参考下
    2022-03-03
  • SpringBoot读取properties配置文件中的数据的三种方法

    SpringBoot读取properties配置文件中的数据的三种方法

    本文主要介绍了SpringBoot读取properties配置文件中的数据的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • 使用Apache Spark进行Java数据分析的步骤详解

    使用Apache Spark进行Java数据分析的步骤详解

    今天我们将探讨如何使用Apache Spark进行Java数据分析,Apache Spark是一个强大的大数据处理引擎,它支持批处理和流处理,特别适合处理大规模数据集,在Java中使用Spark,我们可以利用其强大的数据处理能力来进行各种数据分析任务,需要的朋友可以参考下
    2024-07-07
  • Java Swing组件下拉菜单控件JComboBox用法示例

    Java Swing组件下拉菜单控件JComboBox用法示例

    这篇文章主要介绍了Java Swing组件下拉菜单控件JComboBox用法,结合具体实例形式分析了Swing组件下拉菜单控件JComboBox的具体定义、使用方法及相关使用注意事项,需要的朋友可以参考下
    2017-11-11
  • Java中File、Base64、MultipartFile之间相互转换的代码详解

    Java中File、Base64、MultipartFile之间相互转换的代码详解

    File、Base64和MultipartFile都是在编程中常用的类或者数据类型,用于处理文件和数据的存储、传输和转换等操作,本文将给大家介绍了Java中File、Base64、MultipartFile之间相互转换,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-04-04
  • mall整合SpringSecurity及JWT实现认证授权实战

    mall整合SpringSecurity及JWT实现认证授权实战

    这篇文章主要为大家介绍了mall整合SpringSecurity及JWT实现认证授权实战示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • SpringCloud中的Feign详解

    SpringCloud中的Feign详解

    这篇文章主要介绍了SpringCloud中的Feign详解,Feign是一个声明式的Web Service客户端,以Java接口注解的方式调用Http请求,同时Feign整合了Ribbon和Hystrix,实现负载均衡与容断功能,需要的朋友可以参考下
    2023-09-09
  • 以武侠形式理解Java LinkedList源码

    以武侠形式理解Java LinkedList源码

    链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址
    2021-11-11
  • MyBatis详细讲解DAO代理的使用

    MyBatis详细讲解DAO代理的使用

    MyBatis允许只声明一个dao接口,而无需写dao实现类的方式实现数据库操作。前提是必须保证Mapper文件中的<mapper>标签的namespace属性值必须要和dao接口的类路径一致,MyBatis容器会自动通过动态代理生成接口的实现类
    2022-04-04

最新评论