我遇到了一个我无法找到解决方案的问题。我正在开发一个网络应用程序并且不得不恭贺Oauth
,除了一个问题之外,我的工作正常,在我的重定向中来自Yahoo
的网址我得到了几个参数,我需要在我的动作类中访问其中一些参数。
现在我可以使用getter和setter方法在我的action类中轻松创建一个属性,但属性的名称是
openid.response_nonce
我的Eclipse编辑器不允许我命名这样的变量。虽然一个解决方案是在我的动作类中添加RequestAware
拦截器并访问参数。
我的问题是我可以在不使用RequestAware
inteceptor的情况下访问它吗?
答案 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
此致