WebWork2.2新特性(六):ParameterNameAware接口的用途

ParameterNameAware 是XWork中新增的一个接口,是由Bob Lee (crazybob@google.com)提供的,主要的用途是限制Action仅接收一定规则的参数,用来防止无意义的参数或者破坏?不过我想我暂时用不到这个接口,不过还是介绍一下如何使用吧.

首先我们写一个Action,实现ParameterNameAware接口,这个接口只有一个方法,就是public boolean acceptableParameterName(String name).

我们的Action如下:

package com.jscud.ww2test.parametername;

import com.opensymphony.xwork.ActionSupport;
import com.opensymphony.xwork.interceptor.ParameterNameAware;

/**
 * @author scud http://www.jscud.com
 */
public class ParameterNameTestAction extends ActionSupport implements ParameterNameAware
{
    private String name1;
    private String name2;
    private String name3;

    public String execute()
    {
        return SUCCESS;
    }

    /**
     * 当前参数名是否允许.
     * @param name 参数名
     * @return 是否允许
     */
    public boolean acceptableParameterName(String name)
    {
        if (name.equals("name1") || name.equals("name2"))
        {
            return true;
        }
               
        return false;
    }

    public String getName1()
    {
        return name1;
    }

    public void setName1(String name1)
    {
        this.name1 = name1;
    }

    public String getName2()
    {
        return name2;
    }

    public void setName2(String name2)
    {
        this.name2 = name2;
    }

    public String getName3()
    {
        return name3;
    }

    public void setName3(String name3)
    {
        this.name3 = name3;
    }
}

 


可以看到,这个Action实现了ParameterNameAware接口,并且设置只接收"name1"和"name2"两个参数,而我们在action有三个用来保存用户输入值的对象:name1,name2和name3.

我们的action定义如下:

 <package name="parameternametest" extends="webwork-default" namespace="/parametername">
  <action name="index" class="com.jscud.ww2test.parametername.ParameterNameTestAction">
   <result name="success" type="dispatcher">
    <param name="location">/parametername/index.jsp</param>
   </result>
  </action>
 </package> 

不需要定义任何额外的拦截器,这个接口是在ParametersInterceptor被检测的.

目标页面如下:

 <%@ page contentType="text/html; charset=UTF-8" %>
 <%@ taglib uri="webwork" prefix="ww" %>
 <html>
 <head>
     <title>Test ParamaterName</title>
 </head>
 <body>
 
 <ww:form name="test" action="index" method="post" namespace="/parametername" >
 <ww:textfield name="name1"  label="Name1" /><br>
 <ww:textfield name="name2"  label="Name2" /><br>
 <ww:textfield name="name3"  label="Name3" /><br>
 <ww:submit value="Submit" />
 </ww:form>
 <br/>
 
 Show Message:
 <br/>
 Name1 is:<ww:property value="name1" /><br/>
 Name2 is:<ww:property value="name2" /><br/>
 Name3 is:<ww:property value="name3" /><br/>
 </body>
 </html> 

 运行程序,我们可以发现,name3的值没有得到设置,我们在页面中也自然得不到name3的值了.


除经特别注明外,本文章版权归JScud Develop团队或其原作者所有.
转载请注明作者和来源.  scud(飞云小侠)  欢迎访问 JScud Develop


posted on 2005-09-03 10:46 Scud(飞云小侠) 阅读(779) 评论(0)  编辑  收藏 所属分类: WEB


只有注册用户登录后才能发表评论。


网站导航:
 
<2005年9月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

导航

统计

公告

文章发布许可
创造共用协议:署名,非商业,保持一致

我的邮件
cnscud # gmail


常用链接

留言簿(15)

随笔分类(113)

随笔档案(103)

相册

友情链接

技术网站

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜