JSF 2.0;我的脸;仅使用 POST 提交表单
Posted
技术标签:
【中文标题】JSF 2.0;我的脸;仅使用 POST 提交表单【英文标题】:JSF 2.0; MyFaces; Form submit only with POST 【发布时间】:2012-07-31 03:13:12 【问题描述】:我有一个安全问题,但我不知道如何在 JSF 中执行此操作。 在 php 中,我可以对定义为 POST 的表单提交做出反应,我只想通过 POST 获取值,因此无法通过 GET 从同名字段获取值。
示例:
表单中的字段名:用户名
在我的 PHP 站点中,我可以通过$_POST["username"]
获取值,但不能通过$_GET["username"]
获取值,因为我没有实现 GET 方式,只有 POST。
所以,现在我也想在我的 JSF 网站中使用它。 问题是,我不能只为所有请求实现 POST,我还必须对 GET 做出反应。 我只希望我的表单数据将通过 POST 发送到我的 bean,而不是通过 GET。
我怎样才能做到这一点? 用过滤器还是别的什么? 为了您的兴趣:我无法在我的应用程序中使用 javascript。
非常感谢!
【问题讨论】:
【参考方案1】:我不确定我是否理解您的问题,但如果您只需要检查是否使用 POST 或 GET 调用了支持 bean 上的方法,您可以从 HttpServletRequest 对象中获取该信息,如下所示:
@ManagedBean(name="myBean")
@ViewScoped
public class MyMBean implements Serializable
public void handleForm()
HttpServletRequest req = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
if(req.getMethod().equalsIgnoreCase("POST"))
//Handle your form data
【讨论】:
看起来很完美!谢谢 :-) 我会试试你的解决方案! 这是一种笨拙的方式。通常,每当您需要从 JSF 支持 bean 中的javax.servlet.*
包中导入某些内容时,很有可能会有更好、更多 JSF 风格的方法来实现相同目的,或者您实际上不应该使用JSF 支持 bean。你需要三思而后行。【参考方案2】:
只需检查FacesContext#isPostback()
。
if (FacesContext.getCurrentInstance().isPostback())
// It's a JSF POST request.
【讨论】:
以上是关于JSF 2.0;我的脸;仅使用 POST 提交表单的主要内容,如果未能解决你的问题,请参考以下文章