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

我们来详细讲解“复选框和Struts2后台交互代码详解”的完整攻略。

1. 复选框怎么用?

1.1 HTML中的复选框

在HTML中,复选框是通过input标签来定义的,type属性的值为checkbox。

<input type="checkbox" name="rememberMe" value="true"> Remember me

复选框的name属性和值会一起提交给服务器,如果勾选了复选框,则name属性和value属性的值会作为一个键值对被提交到服务器中。

1.2 Struts2中如何获取复选框的值?

在Struts2中,可以通过在Action类中定义一个同名的boolean类型的属性来接收复选框的值。例如如下的代码:

public class LoginAction extends ActionSupport {
    private boolean rememberMe;

    public void setRememberMe(boolean rememberMe) {
        this.rememberMe = rememberMe;
    }

    // 其他属性和方法
}

在JSP页面中,要将复选框的值提交到Action中,需要将复选框的name属性设置为Action类中对应的属性名。例如,如果Action类中有一个叫做rememberMe的属性,则复选框的代码可以写成如下形式:

<input type="checkbox" name="rememberMe"> Remember me

这样在点击“提交”按钮时,Struts2框架会自动将复选框的值转换为boolean类型,并将其赋值给Action类中对应的属性。

2. Struts2后台交互代码详解

2.1 Action类的编写

在Action类中定义一个boolean类型的属性来接收复选框的值,然后可以在execute方法中处理提交的表单数据。

public class ExampleAction extends ActionSupport {
    private boolean rememberMe;

    public void setRememberMe(boolean rememberMe) {
        this.rememberMe = rememberMe;
    }

    public String execute() throws Exception {
        // 在这里处理提交的表单数据
        return SUCCESS;
    }
}

2.2 JSP页面的编写

在JSP页面中,通过input标签来定义复选框,name属性的值应该和Action类中定义的属性名称保持一致。

<s:form action="exampleAction">
    <s:checkbox name="rememberMe" label="Remember me" fieldValue="true"/>
    <s:submit/>
</s:form>

在这个例子中,我们使用了Struts2的标签库,并通过标签库的方式定义了复选框。label属性表示复选框的文本,fieldValue属性表示当复选框被选中时提交的值。

2.3 验证器的编写

如果需要对复选框的值进行验证,可以在Action类中使用Struts2的验证器来实现。例如:

public class ExampleAction extends ActionSupport {
    private boolean rememberMe;

    public void setRememberMe(boolean rememberMe) {
        this.rememberMe = rememberMe;
    }

    @Override
    public void validate() {
        if (!rememberMe) {
            addFieldError("rememberMe", "Please remember me");
        }
    }

    public String execute() throws Exception {
        // 在这里处理提交的表单数据
        return SUCCESS;
    }
}

在这个例子中,我们通过在validate方法中手动添加错误信息来验证复选框的值是否合法。如果复选框没有被选中,则添加一个fieldError。

3. 示例

3.1 示例1:判断用户是否勾选复选框

在这个示例中,我们需要让用户输入用户名和密码,并显示一个“Remember me”复选框。如果用户勾选了复选框,则在登录成功后会将用户名和密码记住。

Action类代码:

public class LoginAction extends ActionSupport {
    private String username;
    private String password;
    private boolean rememberMe;

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setRememberMe(boolean rememberMe) {
        this.rememberMe = rememberMe;
    }

    public String execute() {
        if ("admin".equals(username) && "admin".equals(password)) {
            if (rememberMe) {
                // 将用户名和密码保存到Cookie中
                Cookie cookie1 = new Cookie("username", username);
                cookie1.setMaxAge(60 * 60 * 24 * 30); // 30 days
                Cookie cookie2 = new Cookie("password", password);
                cookie2.setMaxAge(60 * 60 * 24 * 30);
                ServletActionContext.getResponse().addCookie(cookie1);
                ServletActionContext.getResponse().addCookie(cookie2);
            }
            return SUCCESS;
        } else {
            addActionError(getText("error.login"));
            return ERROR;
        }
    }
}

JSP页面代码:

<s:form action="login">
    <s:textfield name="username" label="Username"/>
    <s:password name="password" label="Password"/>
    <s:checkbox name="rememberMe" label="Remember me" fieldValue="true"/>
    <s:submit/>
</s:form>

3.2 示例2:批量删除

在这个示例中,我们需要让用户勾选多个复选框,然后将勾选的复选框对应的数据删除。

Action类代码:

public class ExampleAction extends ActionSupport {
    private List<Integer> ids;

    public void setIds(List<Integer> ids) {
        this.ids = ids;
    }

    public String execute() throws Exception {
        // 删除所有选中的数据
        for (Integer id : ids) {
            deleteData(id);
        }
        return SUCCESS;
    }

    private void deleteData(Integer id) {
        // 删除数据的具体实现
    }
}

JSP页面代码:

<s:form action="exampleAction">
    <s:iterator value="list">
        <s:hidden name="ids" value="%{id}"/>
        <s:checkbox name="check" fieldValue="%{id}"/>
        <s:property value="name"/>
    </s:iterator>
    <s:submit/>
</s:form>

在这个例子中,我们使用了Struts2的迭代标签库来遍历数据列表,并将每一条数据的ID存储到一个隐藏的文本框中。当用户选中复选框时,这些隐藏文本框的值就会被上传到服务器端。在Action类中,我们定义了一个类型为List的属性来接收这些值,然后在execute方法中遍历这个列表,将其中的数据删除。

在以上两个示例中,我们通过HTML标签和Struts2标签来定义复选框,并通过Action类和JSP页面中的代码将它们连接起来。在第一个示例中,我们演示了如何将勾选状态保存到Cookie中;在第二个示例中,我们演示了如何删除多个数据。通过这些实例,我们可以深入了解复选框的使用方法,同时掌握Struts2框架中处理复选框的基本技巧。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:复选框和Struts2后台交互代码详解 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 基于java语言实现快递系统

    为了实现一个基于Java语言的快递系统,我们需要采取以下步骤: 第一步:需求分析 首先,我们需要对开发的快递系统进行需求分析,确定系统的基本功能和特性。这一步需要和客户或用户沟通,收集需求并进行分析,以确保快递系统能够满足用户期望并达到预期效果。 第二步:设计系统架构 在确定了快递系统的需求之后,我们需要对系统进行设计,确定系统的结构和运行机制。针对一些功能…

    Java 2023年5月18日
    00
  • java反射方式创建代码详解

    让我来为您详细讲解“Java反射方式创建代码详解”的完整攻略。 什么是Java反射 Java反射是指在程序运行时动态地获取类的信息以及动态调用类的方法的机制。Java反射机制提供了在运行时检查和修改类、方法和属性的能力。 Java反射方式创建代码详解 在Java中,我们可以使用反射机制来创建新的类实例、触发方法调用、获取类的属性等。下面将介绍利用反射机制来创…

    Java 2023年5月30日
    00
  • MySQL 处理大数据表的 3 种方案,写的太好了,建议收藏!!

    作者:马佩 链接:https://juejin.cn/post/7146016771936354312 场景 当我们业务数据库表中的数据越来越多,如果你也和我遇到了以下类似场景,那让我们一起来解决这个问题 数据的插入,查询时长较长 后续业务需求的扩展 在表中新增字段 影响较大 表中的数据并不是所有的都为有效数据 需求只查询时间区间内的 评估表数据体量 我们可…

    Java 2023年4月17日
    00
  • java实现停车场管理系统

    Java实现停车场管理系统攻略 1.需求分析 停车场管理系统需要实现以下功能: 停车:可以记录车辆的停放时间和位置(车位号) 取车:可以计算车辆停放的费用并将车位号记录,同时从停车记录中删除该车辆 车位管理:对车位进行增删改查,可以查询所有车位和空闲车位 停车记录查询:可以查询所有停车记录以及某个时间段的停车记录 2.数据库设计 使用MySQL数据库存储停车…

    Java 2023年5月24日
    00
  • 关于SQL注入绕过的一些知识点

    关于SQL注入绕过的知识点,这是一项非常复杂的话题,需要掌握的知识点比较多,下面我会给大家详细解析。 1.理解SQL注入的定义 我们首先需要清楚SQL注入是什么,顾名思义,SQL注入就是对网站中使用的SQL语句进行注入,从而达到非法获取数据或者控制网站的目的。这种攻击方式是因为开发者在编写代码的时候没有进行充分的输入验证而导致网站的漏洞造成的。 2. 理解S…

    Java 2023年6月15日
    00
  • SpringMvc定制化深入探究原理

    以下是关于“SpringMVC定制化深入探究原理”的完整攻略,其中包含两个示例。 SpringMVC定制化深入探究原理 SpringMVC是一个基于MVC架构的Web框架,它提供了一种灵活、高效的方式来开发Web应用程序。在SpringMVC中,我们可以通过定制化来满足特定的需求。本攻略将深入探究SpringMVC定制化的原理,并提供两个示例。 定制化原理 …

    Java 2023年5月16日
    00
  • 关于Java中对象的向上转型和向下转型

    什么是多态? 同一个类调用同一个方法会产生不同的影响/结果 这就是多态 public class Pet{ public void eat(){ System.out.println(“Pet eat…”) } } class Dog extends Pet{ public void eat(){ System.out.pringln(“Dog eat.…

    Java 2023年4月22日
    00
  • MyBatisPlus的简介及案例详解

    MyBatisPlus的简介及案例详解 MyBatisPlus简介 MyBatisPlus是一个基于MyBatis的增强工具库,通过简化开发、提高效率的方式来增强MyBatis的功能。MyBatisPlus提供了很多实用的功能,包括但不限于分页、逻辑删除、自动填充、注入器、代码生成器等等。 MyBatisPlus案例详解 示例1:使用分页功能 MyBatis…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部