在struts2 Action中获取查询字符串参数

时间:2011-12-01 15:51:23

标签: struts2

我遇到了一个我无法找到解决方案的问题。我正在开发一个网络应用程序并且不得不恭贺Oauth,除了一个问题之外,我的工作正常,在我的重定向中来自Yahoo的网址我得到了几个参数,我需要在我的动作类中访问其中一些参数。

现在我可以使用getter和setter方法在我的action类中轻松创建一个属性,但属性的名称是

openid.response_nonce

我的Eclipse编辑器不允许我命名这样的变量。虽然一个解决方案是在我的动作类中添加RequestAware拦截器并访问参数。

我的问题是我可以在不使用RequestAware inteceptor的情况下访问它吗?

2 个答案:

答案 0 :(得分:0)

没有RequestAware拦截器......有一个Servlet-Config拦截器,它将检查你的动作是否具有以下接口之一:ServletContextAware,ServletRequestAware,ServletResponseAware,ParameterAware,RequestAware,SessionAware,ApplicationAware,PrincipalAware。 / p>

Servlet-Config拦截器是默认堆栈的一部分,您可能已经在使用它。因此,使用其中一个感知接口不需要额外的成本或配置。

除此之外,如果您有一个名为“openid.response_nonce”的参数,其中包含一个字符串,您应该可以使用以下内容来引用它:

//following not tested, and not checked for syntax errors

private Map openid = new HashMap();
//In Constructor{
  oauth.put("response_nonce","");
}
//create BOTH a getter and setter for openid
public getOpenid(){
  return openid;
}

public setOpenid(Map openid){
  this.openid = openid;
}

现在struts2应该能够弄清楚如何设置值......我想,抱歉没有测试它。您总是可以使用response_nonce属性创建一个名为Openid的类(以及该类的相应getter和setter)...但我认为在这种情况下,如果您只需要该单个属性,最好只使用RequestAware。 / p>

答案 1 :(得分:0)

我认为您可能正在寻找Alias拦截器。 http://struts.apache.org/2.0.14/docs/alias-interceptor.html

此致