我有一个带有Faces 1.2的ADF Web应用程序
在我的托管bean中,我试图访问post请求的参数,但总是变为null。
这是我发布到Faces的帖子表格:
<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
,奇怪!
答案 0 :(得分:1)
当您提出以下网址请求时:
ADF框架通过&#34; HTTP错误302暂时移动&#34;响应并将您重定向到以下URL:
http://server/faces/somepage.jspx?_adf.ctrl-state=888888&_afrLoop=9999999
所以你的第一个POST请求被省略,浏览器向ADF返回的新URL发送另一个请求,因为请求体中的POST方法发送参数,浏览器不会在新的Get请求中重新发送它们 所以我认为你无法直接在ADF页面中获取参数! :(
但我认为最好的方法是创建一个 Servlet 并让你参与其中并将它们置于会话然后重定向用户从servlet到你的ADF页面:)
答案 1 :(得分:0)
我通过在我的应用程序正在使用的过滤器映射中包含我的解析操作来管理读取请求参数。
以一种非常不正常的方式 FacesContext 总是拒绝透露当前的参数,到现在为止,为什么它的设计喜欢它,即使通过它的外部环境也是个谜。