2011-12-01 28 views
1

我已经跨在那里我无法找到一个solution.I我工作的一个Web应用程序,必须impliment Oauth一个问题来了,事情对我来说只是一个问题,做工精细,在我的重定向返回URL从Yahoo我得到几个参数,我需要访问我的行动类中的几个。获得在Struts2行动的查询字符串参数

现在我可以在我与它的getter和setter方法动作类很容易地创建一个属性,但属性的名称是

openid.response_nonce 

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

我的问题是我可以访问它,而不使用RequestAware inteceptor?

+0

我知道这件事,但我的问题是与我从雅虎找回参数的'openid.response_nonce'名 –

回答

0

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

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应该能够找出如何设定值...我想,对不起没有测试它。你总是可以创建一个名为OpenID的一个response_nonce属性(用适当的getter和setter方法该类一起)类...但我认为,在这种情况下,它可能是最好只使用RequestAware如果你只需要一个单一的属性。