struts2中一个表单中提交多个请求的例子(多个提交按钮)

在struts2中实现一个表单中提交多个请求的例子,常见的方法是使用多个提交按钮,每个按钮对应一个请求。以下是详细的步骤:

1. 编写表单

首先在jsp页面中编写表单,并使用<s:submit>标签来生成提交按钮。每个不同的提交按钮会绑定不同的请求。例如:

<s:form action="processForm">
  <!-- 表单输入框等元素 -->
  <s:submit name="submitType" value="Save"/>
  <s:submit name="submitType" value="Update"/>
</s:form>

上述表单中有两个提交按钮,它们的name属性都为submitType,但是它们的value属性分别为SaveUpdate。这意味着在提交表单时,会根据按钮的value属性来判断用户到底选择了哪个按钮。这个值会被作为请求参数带到processForm这个action中。

2. 编写Action

在struts2中,可以在Action中使用@Action注解来指定这个Action对应的请求路径。同时可以使用@Result注解来指定请求成功后需要转到哪个页面。

在本例中,需要处理两个不同的请求,所以需要在Action中编写两个方法,分别对应这两个请求。例如:

@Action(value = "processForm", results = {
  @Result(name = "save", location = "/success-save.jsp"),
  @Result(name = "update", location = "/success-update.jsp")
})
public String processForm() {
  String submitType = getSubmitType();
  if (submitType.equals("Save")) {
    // 处理Save请求的代码
    return "save";
  } else if (submitType.equals("Update")) {
    // 处理Update请求的代码
    return "update";
  } else {
    return ERROR;
  }
}

// 使用@SkipValidation注解可以跳过表单校验
@Action(value = "cancelForm", results = {@Result(name = "success", location = "/cancel.jsp")})
@SkipValidation
public String cancelForm() {
  // 处理Cancel请求的代码
  return SUCCESS;
}

上述代码中,processForm方法对应表单的提交请求,根据提交按钮的值来判断需要执行哪个处理逻辑,然后返回对应的结果页面。cancelForm方法对应另外一个请求,它的@SkipValidation注解可以跳过表单校验。

3. 编写验证器

如果需要对表单进行约束和校验,还需要配置struts2的表单验证器。在本例中,可以使用@Validations注解来指定需要的校验规则。

例如,以下代码指定了一个名为processForm的校验规则,它要求必须有一个名为username的非空字符串。

@Validations(
  requiredStrings = {@RequiredStringValidator(fieldName = "username", message = "Username is required")}
)

示例1:增删改示例

下面给出一个完整的增删改的示例,使用struts2中一个表单中提交多个请求的方式实现。假设有一个用户管理的应用,可以通过表单来新增、修改或者删除用户。

  1. JSP页面

创建一个包含三个提交按钮的JSP页面:

<s:form action="processForm">
  <s:textfield name="username" label="Username"/>
  <s:textfield name="password" label="Password"/>
  <s:textfield name="email" label="Email"/>

  <s:submit name="submitType" value="Create"/>
  <s:submit name="submitType" value="Update"/>
  <s:submit name="submitType" value="Delete"/>
</s:form>
  1. Action

在Action中定义三个方法,分别对应Create、Update和Delete请求:

@Action(value = "processForm", results = {
  @Result(name = "success-create", location = "/success-create.jsp"),
  @Result(name = "success-update", location = "/success-update.jsp"),
  @Result(name = "success-delete", location = "/success-delete.jsp")
})
public String processForm() {
  String submitType = getSubmitType();

  if (submitType.equals("Create")) {
    // 处理创建用户的逻辑
    return "success-create";
  } else if (submitType.equals("Update")) {
    // 处理更新用户的逻辑
    return "success-update";
  } else if (submitType.equals("Delete")) {
    // 处理删除用户的逻辑
    return "success-delete";
  } else {
    return ERROR;
  }
}
  1. 验证器

定义一个Validations注解,要求表单的username字段和password字段必须有值:

@Validations(
  requiredStrings = {
    @RequiredStringValidator(fieldName = "username", message = "Username is required"),
    @RequiredStringValidator(fieldName = "password", message = "Password is required")
  }
)

通过以上配置,当用户点击不同的提交按钮时,struts2框架会将请求参数中的submitType值传递到前端控制器中,根据不同的值会转向到相应的方法中,最终实现三个不同的用户处理逻辑。

示例2:多语言切换

假设我们的应用需要支持多国语言,通过表单提交不同的语言选择来进行切换。

  1. JSP页面

创建一个带有三个提交按钮的表单页面:

<s:form action="changeLanguage">
  <s:submit name="submitType" value="English"/>
  <s:submit name="submitType" value="Chinese"/>
  <s:submit name="submitType" value="Spanish"/>
</s:form>
  1. Action

在Action中定义一个方法,判断请求是哪个按钮被点击,然后根据点击的按钮选择对应的语言,存储到ActionContext中:

@Action(value = "changeLanguage", results = {@Result(name = "success", location = "/index.jsp")})
public String changeLanguage() {
  String submitType = getSubmitType();
  String language;

  if (submitType.equals("English")) {
    language = "en_US";
  } else if (submitType.equals("Chinese")) {
    language = "zh_CN";
  } else if (submitType.equals("Spanish")) {
    language = "es_ES";
  } else {
    language = "en_US";
  }

  ActionContext.getContext().setLocale(new Locale(language));

  return SUCCESS;
}
  1. 配置文件

在struts.xml文件中,需要增加如下代码,指定默认的语言设置:

<constant name="struts.locale" value="en_US"/>

通过以上配置,在点击按钮后,struts2框架会根据请求参数中的submitType值转到相应的方法中,然后根据按钮的值选择对应的语言,存储到ActionContext中,最终实现多语言切换的功能。

以上两个示例都说明了如何在struts2中实现一个表单中提交多个请求的例子,如何根据请求参数中的按钮值,转到相应的处理方法中,以及如何根据不同的请求返回不同的结果页面。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:struts2中一个表单中提交多个请求的例子(多个提交按钮) - Python技术站

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

相关文章

  • Java中字符序列的替换与分解的几种实现方法

    Java中字符序列的替换与分解的几种实现方法 字符串(String)是Java编程中最常见的数据类型之一。但是,如果我们要处理字符串中包含的字符序列时,String类的效率并不高。字符串的每次修改都会导致创建一个新的字符串对象,这会很容易造成内存泄漏和效率低下的问题。为了克服这些问题,Java提供了两种更适合于字符操作的数据类型:StringBuilder和…

    Java 2023年5月27日
    00
  • 5分钟快速了解String.trim()到底做了什么事

    当我们使用Java字符串时,我们可以使用trim()方法来去除字符串的首尾空格。 一、什么是String.trim()方法? String.trim()方法属于Java String类的一个方法,用于去除字符串的首尾空格。该方法返回一个新的字符串,而不是修改原始字符串。 二、String.trim()方法的使用 在Java编程中,我们可以使用String.t…

    Java 2023年5月20日
    00
  • Java毕业设计实战之在线网盘系统的实现

    Java毕业设计实战之在线网盘系统的实现攻略 1. 系统设计 1.1 需求分析 初步确定该在线网盘系统的需求如下: 用户可以在系统中上传、下载、删除和分享文件 文件可以以个人文件和共享文件两种形式存在 用户可以设定不同的权限管理,查看和编辑文件需要不同的权限 系统需要考虑安全性,防止恶意攻击和数据泄露 1.2 架构设计 根据需求分析,可以设计出系统的架构,其…

    Java 2023年5月24日
    00
  • JAVA JVM运行时数据区详解

    让我来详细讲解一下“Java JVM运行时数据区”的完整攻略吧。 什么是Java JVM运行时数据区 在Java中,JVM运行时数据区可以分为五个部分,分别是: 程序计数器 Java虚拟机栈 Java堆 方法区 运行时常量池 以下我们将分别对这五个部分进行详细的讲解。 1. 程序计数器 程序计数器是一块较小的内存空间,用来存储当前线程所执行的字节码地址。在多…

    Java 2023年6月1日
    00
  • Java实现简单客户信息管理系统

    下面是Java实现简单客户信息管理系统的完整攻略: 目录 项目介绍 技术栈 实现步骤 示例说明 总结 1. 项目介绍 本项目是一个简单的客户信息管理系统,主要实现以下功能: 显示所有客户信息 添加客户信息 修改客户信息 删除客户信息 按照姓名查询客户信息 2. 技术栈 Java语言 MySQL数据库 JDBC 3. 实现步骤 创建数据库和表格 首先我们需要创…

    Java 2023年5月23日
    00
  • SpringBoot整合Mybatis实现多数据源配置与跨数据源事务实例

    关于“SpringBoot整合Mybatis实现多数据源配置与跨数据源事务实例”的完整攻略,我们可以分以下几个步骤来进行讲解: 添加依赖:在 pom.xml 中添加多数据源、 Mybatis 等相关依赖,例如: <!– Spring Boot 多数据源依赖 –> <dependency> <groupId>org.sp…

    Java 2023年6月3日
    00
  • Java黑科技之通过Google Java Style 文件配置IDEA和Ecplise代码风格

    下面我来详细讲解如何通过Google Java Style配置IDEA和Eclipse的代码风格。 一、Google Java Style 及其重要性 Google Java Style是一种Java代码风格规范,它是Google公司内部使用的标准化代码风格规范。通过使用Google Java Style,可以让代码更加规范化、易读、易维护。 Google …

    Java 2023年5月20日
    00
  • 全面解析Java支持的数据类型及Java的常量和变量类型

    全面解析Java支持的数据类型及Java的常量和变量类型 Java支持的基本数据类型 Java支持八种基本数据类型,分别是:byte、short、int、long、float、double、char和boolean。具体说明如下: byte:8位有符号整数类型。用于节省内存,适合于低级数据。 short:16位有符号整数类型。和byte类似,被用于节省空间。…

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