我有一个ADF web应用程序与Faces 1.2
在我的管理bean中,我试图访问post请求的参数,但总是得到null。
这是我的帖子形式,我张贴的面孔:
<form name="input" action="http://127.0.01:7072/myapplication/faces/login.jspx" method="post">
<input type="hidden" name="user" id="user" value="myUserName"/>
<input type="submit" value="Submit"/>
</form>
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("user");
FacesContext.getCurrentInstance().getExternalContext().getRequest().getParameter("user");
但是我总是得到null,我得到的形式的方法是:GET
,奇怪!
当您请求URL时:
http://server/faces/somepage.jspx
ADF框架以"HTTP Error 302 Moved temporarily"响应响应,并将您重定向到如下URL:
http://server/faces/somepage.jspx?_adf.ctrl-state=888888& _afrLoop = 9999999
所以你的第一个POST请求被忽略,浏览器发送一个其他请求到ADF在响应中返回的新URL,所以因为POST方法在请求体中发送参数,浏览器不会在新的Get请求中重新发送它们所以我认为没有办法让你直接在ADF页面中获得参数!(
,但我认为最好的方法是创建一个Servlet,并得到你的参数,并把它们放在会话,然后重定向用户从Servlet到您的ADF页面:)
我通过在应用程序使用的过滤器映射中包含解析操作来读取请求参数。
以一种非常不正常的方式FacesContext总是拒绝显示当前的参数,直到现在对我来说这是一个谜,为什么它被设计成这样,即使通过它的外部上下文…