关于一个Form对应多个Action

本文介绍了一种在Struts框架中实现一个表单对应多个Action的方法,通过使用隐藏变量传递不同Action的信息,并展示了如何配置struts-config.xml及编写对应的Action类。

关于一个Form对应多个Action
背景:修改的页面有修改,新增两个功能。都得需要提交这个表单。
解决:例子,分页参数的传递,使用了隐藏变量
 


jsp
<html:submit property="action"><bean:message key="button.select"/></html:submit>
<html:submit property="action"><bean:message key="button.prePage"/></html:submit>
<html:submit property="action"><bean:message key="button.nextPage"/></html:submit>


struts-config.xml
<action path="/showHolidayIndex"
    name="HolidayFormBean"
    validate="false"
    input="/pages/holiday/holiday_index.jsp"
    attribute="HolidayFormBean"
    type="com.mgs.MGSkentai.action.holiday.HolidayAction"
    parameter="action"
    scope="request">
    <forward name="showdata" path="/pages/holiday/holiday_index.jsp"></forward>  
  </action>

 

 

 

Action
 
public class HolidayAction extends LookupDispatchAction {

 //page
 private static int MAX_RECORD = 10;
 private int begin = 0;
 private int end = 0;
 
 
 
 protected Map getKeyMethodMap() {
  Map map = new HashMap();
  map.put("button.select", "BeginSearch");
  map.put("button.prePage", "PrePage");
  map.put("button.nextPage", "NextPage");
  return map;
 }


 public ActionForward BeginSearch(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) throws Exception {

 

  return mapping.findForward("showdata");
 }
 

 

 public ActionForward PrePage(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) throws Exception {
  
  return mapping.findForward("showdata");
 }
 
 public ActionForward NextPage(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) throws Exception {
  
  return mapping.findForward("showdata");
 }
 

}

 

PS: 有更好的方法的话~欢迎大家给意见~谢谢~

 

### 多个下拉框选择功能的实现 在Web开发中,`DropDownList` 是一种常见的控件形式,用于提供一组选项供用户选择。如果要在HTML表单中创建多个具有独立选择功能的下拉框,则可以通过多次定义 `<select>` 元素来完成此操作[^1]。 以下是具体实现方法: #### 使用多个 `<select>` 元素 每个 `<select>` 元素代表一个单独的下拉列表。通过为每个下拉列表分配唯一的 `name` 或 `id` 属性,可以区分它们的数据提交行为。 ```html <form action="/submit_form" method="post"> <!-- 下拉框 1 --> <label for="dropdown1">Choose Option 1:</label> <select name="dropdown1" id="dropdown1"> <option value="">--Please choose an option--</option> <option value="option1_1">Option 1-1</option> <option value="option1_2">Option 1-2</option> <option value="option1_3">Option 1-3</option> </select> <!-- 下拉框 2 --> <br><br> <label for="dropdown2">Choose Option 2:</label> <select name="dropdown2" id="dropdown2"> <option value="">--Please choose another option--</option> <option value="option2_1">Option 2-1</option> <option value="option2_2">Option 2-2</option> <option value="option2_3">Option 2-3</option> </select> <!-- 提交按钮 --> <br><br> <input type="submit" value="Submit"> </form> ``` 上述代码展示了两个独立的下拉菜单,分别命名为 `dropdown1` 和 `dropdown2`。当用户选择并提交表单时,服务器端会接收到这两个字段及其对应的选中值。 #### 动态生成下拉框 对于更复杂的应用场景,可能需要动态生成这些下拉框。这通常涉及 JavaScript 来增强用户体验。例如,基于第一个下拉框的选择更新第二个下拉框的内容。 ```javascript document.addEventListener('DOMContentLoaded', function () { const dropdown1 = document.getElementById('dropdown1'); const dropdown2 = document.getElementById('dropdown2'); dropdown1.addEventListener('change', function () { // 清空第二个下拉框 while (dropdown2.firstChild) { dropdown2.removeChild(dropdown2.firstChild); } // 基于第一个下拉框的值填充数据 if (this.value === 'option1_1') { addOptionsToDropdown(['Sub-option A', 'Sub-option B'], dropdown2); } else if (this.value === 'option1_2') { addOptionsToDropdown(['Sub-option C', 'Sub-option D'], dropdown2); } }); function addOptionsToDropdown(optionsArray, selectElement) { optionsArray.forEach(optionText => { let option = new Option(optionText, optionText.toLowerCase()); selectElement.add(option); }); } }); ``` 这段脚本监听了第一个下拉框的变化事件,并根据其当前值调整第二个下拉框中的可用选项[^4]。 --- #### 数据处理与验证 为了确保所收集到的数据符合预期,在实际应用中还可以引入验证机制。例如,利用 HTML5 的内置属性(如 `required`),或者借助专门的验证框架对输入进行校验。 ```html <select name="dropdown1" id="dropdown1" required> <option value="" disabled selected>--Select one--</option> ... </select> ``` 以上示例强制要求用户至少选择一项才能继续提交表单。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值