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

yizhihongxing

我们来详细讲解“复选框和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日

相关文章

  • SpringMVC返回的ResponseEntity出现乱码及解决

    下面是关于SpringMVC返回的ResponseEntity出现乱码及解决的完整攻略。 问题描述 在使用SpringMVC框架进行开发时,返回的ResponseEntity对象的中文内容可能会出现乱码问题。这是因为在返回ResponseEntity时,其默认编码格式为ISO-8859-1,而不是UTF-8。 解决方法 方法一:设置Http Headers编…

    Java 2023年5月20日
    00
  • jsp实现剪子石头布小游戏

    实现一个剪子石头布小游戏的完整攻略需要以下几个步骤: 创建一个JSP网页,用于显示游戏界面,用户可以进行游戏选择和游戏操作。 在JSP网页中使用HTML和CSS,创建游戏界面。可以使用Canvas或HTML DOM创建游戏操作界面。 在JSP网页中,使用JavaScript编写游戏逻辑。游戏逻辑包括用户输入判断、计算得分、更新游戏状态等。 将JSP网页和游戏…

    Java 2023年6月15日
    00
  • SiteMesh如何结合Freemarker及velocity使用

    SiteMesh是一个开源的Java Web页面布局和装饰框架,它可以帮助我们将一个页面的布局和内容分离开来,以便我们可以轻松更改网页的样式和结构。同时,SiteMesh可以与多个模板引擎一起使用,Freemarker和Velocity是SiteMesh集成中广泛使用的两种模板引擎。 下面我们将介绍SiteMesh如何结合Freemarker及velocit…

    Java 2023年6月16日
    00
  • Spring boot @RequestBody数据传递过程详解

    下面我就为您详细讲解 “Spring Boot @RequestBody 数据传递过程详解” 的攻略。 什么是 @RequestBody ? @RequestBody 是 Spring MVC 中的一个注解,用于获取 HTTP 请求 Body 中的数据。在 Spring Boot 中,@RequestBody 可以和 @RestController 注解一起…

    Java 2023年5月26日
    00
  • 用GUI实现java版贪吃蛇小游戏

    让我来为你详细讲解“用GUI实现java版贪吃蛇小游戏”的完整攻略。 1. 设计思路 在实现java版贪吃蛇小游戏之前,我们需要有一个清晰的设计思路。在这里,我将介绍一下我用于此游戏的设计思路。 首先,我们需要创建一个游戏窗口,窗口中包含游戏画布和得分栏。游戏画布用于画出贪吃蛇及其食物,得分栏用于显示游戏得分。 然后,我们需要设计贪吃蛇的行动逻辑,包括蛇的移…

    Java 2023年5月19日
    00
  • Java Map所有的值转为String类型

    要将Java Map中的所有值转换为String类型,可以采用以下步骤: 获取Map中所有的键值对 遍历所有的键值对,将值转换为String类型 以下是一个实现这个过程的Java示例代码: Map<String, Object> map = new HashMap<String, Object>(); map.put("ke…

    Java 2023年5月20日
    00
  • mybatis中的mapper.xml使用循环语句

    MyBatis是Java企业级应用中常用的持久化框架之一。在MyBatis中,mapper.xml是定义SQL语句的重要文件,循环语句是在mapper.xml中进行数据处理的常用方式之一。本文将从以下几个方面,详细讲解MyBatis中的mapper.xml使用循环语句的完整攻略: MyBatis中支持哪些类型的循环语句 MyBatis中如何编写循环语句 在M…

    Java 2023年5月20日
    00
  • java8 实现提取集合对象的每个属性

    Java 8中提供了Stream API,可以通过该API实现快速高效的对集合对象的转换和处理。下面是提取集合对象的每个属性的完整攻略。 攻略步骤 创建集合对象 java List<User> userList = new ArrayList<>(); 添加集合元素 java userList.add(new User(“Tom”, …

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