0

我有一个带有 Faces 1.2 的 ADF Web 应用程序

在我的托管 bean 中,我试图访问发布请求的参数,但总是为空。

这是我发布到 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,奇怪!

4

2 回答 2

1

当您请求以下 URL 时:

http://server/faces/somepage.jspx

ADF 框架通过“HTTP 错误 302 临时移动”响应响应您,并将您重定向到如下 URL:

http://server/faces/somepage.jspx?_adf.ctrl-state=888888&_afrLoop=9999999

所以你的第一个 POST 请求被省略,浏览器向 ADF 作为响应返回的新 URL 发送另一个请求,所以因为请求正文中的 POST 方法发送参数,浏览器不会在新的 Get 请求中重新发送它们,所以我认为没有办法您可以直接在 ADF 页面中获取参数!:(

但我认为最好的方法是创建一个Servlet并将您的参数放入其中并将它们放入会话,然后将用户从 servlet重定向到您的 ADF 页面:)

于 2016-06-12T07:05:01.217 回答
0

我通过在我的应用程序使用的过滤器映射中包含我的解析操作来管理读取请求参数。

FacesContext总是以一种非常不正常的方式拒绝透露当前参数,直到现在对我来说,为什么它是这样设计的还是个谜,即使是通过它的外部上下文......

于 2014-05-24T12:29:58.457 回答