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从输入流中获取数据并返回字节数组示例 一、问题背景 在Java编程中,我们常常需要从输入流中获取数据,然后进行处理。例如,我们可能需要从文件中读取数据,或者从网络套接字中读取数据。在这些场景下,获取的数据会以字节流的形式存在,我们需要将其转换成字节数组。 二、示例解析 示例一:从本地文件中读取数据 在这个示例中,我们将演示如何从本…

    Java 2023年5月26日
    00
  • 从零开始让你的Spring Boot项目跑在Linux服务器

    下面是从零开始让你的Spring Boot项目跑在Linux服务器的完整攻略。 一、准备工作1. 购买一台Linux服务器,获取root权限。2. 安装Java环境,可以使用yum安装或手动下载安装。 二、打包Spring Boot项目打包Spring Boot项目,生成可执行的jar包。使用以下命令进行打包: mvn package 三、上传jar包到服务…

    Java 2023年6月2日
    00
  • 一篇文章带你初步认识Maven

    了解 Maven Maven 是一个基于 Java 的自动化构建工具,由 Apache Software Foundation 管理。Maven 可以帮助 Java 程序员自动化构建、依赖管理、项目信息管理、发布等一系列工作。 安装 Maven Maven 的安装流程比较简单,只需要按照以下步骤操作: 前往 Maven 的官网https://maven.ap…

    Java 2023年5月20日
    00
  • 多模字符串匹配算法原理及Java实现代码

    多模字符串匹配算法原理及Java实现代码攻略 多模字符串匹配算法是在一个文本串中同时匹配多个模式串的算法。常见的多模匹配算法有Trie树、AC自动机等,本文介绍的是KMP算法。 KMP算法原理 KMP算法的核心思想是利用已知信息,避免不必要的匹配。即:对于模式串中的每一个位置,找到该位置之前的子串的最长公共前后缀,并记录在next[]数组中。当匹配过程中发生…

    Java 2023年5月19日
    00
  • JSP在Linux下的安装

    以下是JSP在Linux下的安装攻略,基于Ubuntu 18.04系统,其他Linux系统可能存在细微差异。 安装Java 前往Oracle官网下载Java SE Development Kit(JDK),下载地址为:https://www.oracle.com/java/technologies/javase-downloads.html 下载完成后,将下…

    Java 2023年6月15日
    00
  • Spring Boot教程之提高开发效率必备工具lombok

    Spring Boot教程之提高开发效率必备工具lombok 在Spring Boot应用程序的开发过程中,我们经常需要编写大量的Java代码。为了提高开发效率,我们可以使用lombok工具来简化Java代码的编写。本文将详细讲解如何在Spring Boot应用程序中使用lombok工具。 步骤一:添加依赖 我们需要在pom.xml文件中添加以下依赖项: &…

    Java 2023年5月15日
    00
  • Java输入输出流的使用详细介绍

    Java输入输出流的使用详细介绍 Java输入输出流是处理输入输出数据的重要组成部分。它们用于读取和写入二进制和字符数据。本文将介绍Java输入输出流的使用,包括字节输入流和字符输入流、字节输出流和字符输出流、以及使用示例。 字节输入流和字符输入流 Java提供了两种类型的输入流:字节输入流和字符输入流。以下是它们的区别: 字节输入流:通过字节输入流读取的数…

    Java 2023年5月20日
    00
  • 关于Springboot+gateway整合依赖并处理依赖冲突问题

    这里给您详细讲解一下关于Springboot+gateway整合依赖并处理依赖冲突问题的完整攻略。 1. 新建Spring Boot项目 在你的IDE中(如:IntelliJ IDEA或Eclipse),选择File -> New -> Project,选择Spring Initializr创建一个Maven项目,选择Web, Gateway依赖…

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