复选框和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日

相关文章

  • springboot结合全局异常处理实现登录注册验证

    下面我将为你详细讲解“Spring Boot结合全局异常处理实现登录注册验证”的完整攻略。 1. 前置知识 在学习此内容之前,你需要对以下技术有一定的了解: Spring Boot Spring MVC Spring Security Maven 2. 添加依赖 首先,我们需要在pom.xml文件中添加一些依赖。这些依赖包括: <!– Spring …

    Java 2023年5月25日
    00
  • spring学习之创建项目 Hello Spring实例代码

    创建 Spring 项目 Hello Spring 实例代码的完整攻略包括以下步骤: 1. 创建 Maven 项目 使用 Maven 作为构建工具,创建一个 Spring 项目。可以使用 mvn archetype:generate 命令快速创建一个 Maven 项目,输入 maven-archetype-webapp 可以创建一个 Java Web 项目。…

    Java 2023年5月31日
    00
  • 第三章-Java的基本程序设计结构

      3.1一个简单的Java语言程序  这是程序虽然很简单,但是所有的Java程序都具有这种结构,因此还是值得花一些时间来研究的。首先,Java区分大小写。如果出现了大小写拼写错误(例如:将main拼写成Main),程序将无法运行。 下面逐行的查看这段源代码。关键字pubilc称为访问修饰符(access modifier),这些修饰符用于控制程序的其他部分…

    Java 2023年5月8日
    00
  • Java实现动态创建类操作示例

    动态创建类是在运行时期间动态地生成类。Java提供了反射API来支持动态类的创建、修改和使用。在本文中,我们将详细讲解Java实现动态创建类的操作步骤和示例。 准备 在第一步中,需要“准备”一些必要的工具和环境。Java提供了三个主要的API来支持动态创建类:java.lang.ClassLoader、java.lang.Class和java.lang.re…

    Java 2023年5月19日
    00
  • Hibernate实体对象继承的三种方法

    Hibernate是一款流行的Java ORM框架,它提供了多种映射关系的继承方式,这里我们主要介绍三种实现方式。 单表继承 单表继承,即将继承关系建立在同一张表中,使用一个“discriminator”字段用于区分不同的实体子类。这种继承方式实现简单,对于表中数据量不大的情况适用。 实现方式 使用@Entity注解声明父类,使用@Discriminator…

    Java 2023年5月20日
    00
  • 深入浅出讲解Spring框架中AOP及动态代理的应用

    深入浅出讲解Spring框架中AOP及动态代理的应用 什么是AOP AOP(Aspect Oriented Programming),即面向切面编程,是一种编程范式。这种编程范式可以帮助我们更好地解耦,关注点分离,使得代码更加清晰明了。在Spring框架中,AOP是实现Aspect Oriented Programming的一种方式。 AOP的核心概念 Jo…

    Java 2023年5月19日
    00
  • java单例五种实现模式解析

    Java单例五种实现模式解析 什么是单例模式? 单例模式是指一个类只能被实例化一次,并且全局都可以访问到这个实例。在实际开发中,很多情况下我们只需要一个实例,例如全局配置信息、日志管理等等,这时候使用单例模式可以节省系统资源,减少不必要的开销。 单例模式的特点 保证一个类只有一个实例。 提供一个访问该实例的全局入口。 不能被其他对象实例化。 五种实现模式 1…

    Java 2023年5月26日
    00
  • Midjourney 提示词工具(10 个国内外最好最推荐的)

    Midjourney,是一个革命性的基于人工智能的艺术生成器,可以从被称为提示的简单文本描述中生成令人惊叹的图像。Midjourney已经迅速成为艺术家、设计师和营销人员的首选工具(包括像我这样根本不会设计任何东西的无能之辈)。 为了帮助你开始使用这个强大的工具,我们汇编了一份15个资源的清单,可以帮助你为你的下一个项目制作更好的提示语……或者让我们…

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