webwork中使用动态Form字段

王朝other·作者佚名  2006-11-24
宽屏版  字体: |||超大  

一般情况下,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没有几天,对我关心的问题提出了上面的方法,肯定是比较简单的想法.

如果那位有其他方法,请不吝指教.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有