webwork中使用动态Form字段

web|动态

  一般情况下,webwork使用字段驱动或者模型驱动方式获取表单中的数据.(普通表单)
但是有的情况下,需要编辑的字段名称内容都是动态变化的,此时就没法使用确定的类来做映射.
 
  此时我想到有以下几种方法解决:
 
  1.使用webwork的内部对象,取出所有参数
 
      ActionContext context = ActionContext.getContext();
      Map params = context.getParameters();
     
      操作params就可以获取所有参数

  2.使用Map映射
 
  Map有get,put函数,例如get("name"),put("name","scud")
  经过试验(文档中没有对此的说明,webwork的文档目前还很少,也可能是我没阅读到)
 
  在表单中映射采用这样的方式:
   <input name="fields.name">
 
 读取值则采用fields['name']的方式,这个文档中提到了
 
 具体的文件如下:

 
 A:输入页面
 
  <%@ taglib uri="webwork" prefix="ww" %>
  <html>
  <head>
  <title>WebWork Test 2</title>
  </head>
  <body>
  <p>What's your name?</p>
  <form action="hello.action" method="post">
  <p>
      <input type="text" name="field.person" /><br>
      <input type="submit" />
  </p>
  </form>
  </body>
  </html>
 

 B:success转向的页面

 
  <%@ taglib uri="webwork" prefix="ww" %>
  <html>
  <head>
  <title>WebWork Test 2</title>
  </head>
  <body> 
  Hello, <ww:property value="field['person']" /><br> 
  </body>
  </html>
 

 C:用到的Action类
 
 
  package helloWorld;
 
  import com.opensymphony.xwork.*;
  import java.util.*;
 
  public class HelloAction extends ActionSupport
  {
      private Map field = new HashMap();
 
      public String execute() throws Exception
      {
          return SUCCESS;
      }
 
      public void setField(Map field)
      {
          this.field = field;
      }
 
      public Map getField()
      {
          return field;
      } 
  }
 
 

  D:xwork.xml里面的部分配置
  
     <action name="hello" class="helloWorld.HelloAction">
         <result name="error" type="dispatcher">ex02-index.jsp</result>
         <result name="success" type="dispatcher">ex02-success.jsp</result>
     </action>  
 
 
 
  3.使用用户自定义类来实现
 
   这种方式不多讨论,用户的类可能需要实现getXXX(String sKey)类似的函数.
 
 
 
  总结:
 
   当然应该还有其他方法实现,而且可能更好,不过我刚看webwork没有几天,对我关心的问题提出了上面的方法,肯定是比较简单的想法.
 
   如果那位有其他方法,请不吝指教.

时间: 2024-12-01 13:55:05

webwork中使用动态Form字段的相关文章

Ext中如何动态生成一个form表单

问题描述 Ext中如何动态生成一个form表单,主要是表单里的item配置是会变的,根据数据库的数据会变.怎样动态生成这个表单呢. 问题补充:lizhi92574 写道 解决方案 var item, items = form.getForm().items;while ((item = items.last())) { //删除组件form.getForm().remove(item);form.remove(item);}form.add();//添加组件form.doLayout();解决方

字段-获取表格中的动态隐藏域中的值

问题描述 获取表格中的动态隐藏域中的值 一个动态表格从数据库获取值,在一个列中有一个隐藏域有数据库的字段id,在js中获取这个这个字段的值,点击提交按钮获取当前列中隐藏域的值 出发日期 到达日期 反馈理由 提交 <script> function doSubmit(){ //获取隐藏域中的值 var id = $("#dateId").val(); alert(id); $.ajax({ url:"/order/"+id+"/update&qu

ibatis 2中,能配置文件中动态指定字段么?

问题描述 ibatis 2中,能配置文件中动态指定字段么?在ibatis 2中,比如有ownerid ownertype两个字段,当ownertype=1时,onwerid 要到A表的a字段进行关联,当onwertype=0时,ownerid要到B表的B字段进行关联,这个在sqlmapper的xml文件中,能配置到么? 问题补充:niuzai 写道 解决方案 <isEqual prepend="AND" property="ownerid" comparePr

vs2005中 水晶报表如何动态添加字段呢?求救

问题描述 如题,水晶报表中的详细资料部分要在程序中用代码动态添加,也就是说显示的字段是未知的,在程序中控制,我应该怎么做呢?哪位兄弟给个例子??在线等... 解决方案 解决方案二:先定義一些字段,在代碼中對這些字段賦值,用推的方式看看解决方案三:阿泰的软件实用主义http://www.cnblogs.com/babyt/archive/2008/01/03/1024941.html解决方案四:在水晶报表里只能用公式.或函数来完成一些计算.统计.如果要加字段,建议在生成报表之前用数据库完成.解决方

如何在水晶报表中动态添加字段

原文:如何在水晶报表中动态添加字段 问题:水晶报表中,因为数据源的字段是不固定的,可否在运行时动态添加字段,就象在winform中动态添加控件一样?(更新:2003-11-05)--------------------------------------解决方案:用"公式字段"1.根据字段的最大数量,定义若干个"公式字段",FormulaFeild1.FormulaFeild2--,公式为空:2.把"公式字段"按顺序放在"详细资料&qu

在JSP文件中的同一个form表单有多个用来提交表单值的按钮,用户可以通过不同的按钮提交表单,需要调用Action中的不同处理方法,该怎么使用动态方法调用?

问题描述 Action 问题补充:是struts2 怎么修改jsP动态form的action名称呀? 解决方案 function formSubmit(){document.form1.method="post"; var url ="<%=request.getContextPath()%>/hrt/chartSichuan.do?method=recordList"; document.form1.action= url; document.form

PHP操作数据库 动态创建字段

PHP操作数据库时自动创建字段,如下代码: <html>  <head>  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />  <title>动态创建字段 - www.cxybl.com</title>  <style type="text/css">  <!--  .STYLE

教你在Delphi程序中使用动态图标

在应用程序的编写中,组合框(ComboBox).列表框(ListBox).等常见的部件,通常不仅要用于显示文字,而且还要显示其与文字相关的图标.在一般的Windows应用程序中,这些图标的显示都要随列出的显示文本的变化而变化,例如在组合框中列出当前目录下的所有文件时,在组合框左边就显示与文件名相关联的图标,这就是所谓的动态图标.在Delphi中使用动态图标的步骤如下: 一.图标的获取 要使用动态图标,首先要解决的是如何获得显示文本和与其相关联的图标句柄.该图标通过文件关联由系统注册表决定,并且在

Struts1.x系列教程(14):动态Form

一.动态Form简介 虽然ActionForm功能强大,但有些时候使用起来有些麻烦.如每建立一个用户录入界面(JSP页面),就得建立一个ActionForm子类来和这个页面对应.当然,我们可以采用嵌套属性从一定程度上弥补这个问题.但是在建立新的用户录入界面时,仍不可避免地要建立新的ActionForm子类. 在Struts1.2.6及以后的Struts版本中提供了一种动态Form的技术.使得不用再建立新的ActionForm就可以封装用户提交的数据.实际上,这种技术将定义ActionForm子类