代码之家  ›  专栏  ›  技术社区  ›  Simon Lehmann

ICEfaces:如何禁用某些表单的发送-接收更新机制

  •  1
  • Simon Lehmann  · 技术社区  · 16 年前

    我对ICEfaces非常陌生,但已经有了JSF/Facelets和JavaEE的总体经验。

    目前,除了outputStyle和outputDeclaration之类的实用程序标记外,我不太习惯使用很多ICEfaces,但即使这样也很好。

    尽管我计划稍后使用一些AJAX功能,但我有一些h:forms(或ice:forms),我希望将其作为正常的JSF POST请求发送,而无需通过/block/send-receive更新。原因是,我想使用一个过滤器,它作用于请求的URI,如果所有内容都发送到/block/send-receive-updates,这是不可能的。

    有没有办法做到这一点?

    编辑: 要澄清我想做什么:

    我们正在开发的网站由公开可用的页面和一些只有注册会员才能访问的页面组成。servlet标准中定义的基于表单的标准安全机制非常不灵活,因为当有人想要访问某些受限内容时,它只允许定义一个显示的登录页面。因为我们还希望用户能够使用每个页面上都可见的小登录表单登录,所以我们开发了一个过滤器,它可以像web容器一样处理身份验证和授权。如果用户未经身份验证/授权,它将重定向到自定义登录页面,但也允许从支持bean对用户进行身份验证。为了使它几乎透明地工作,它包装了HttpServletRequest以提供主体和用户角色。

    2 回复  |  直到 16 年前
        1
  •  1
  •   user7094 user7094    16 年前

    我已经使用IceFaces将近一年了,还没有遇到任何不通过发送-接收更新提交表单的方法。但我很好奇,你会说“我计划以后使用一些AJAX功能”。IceFaces的要点是,它非常透明地将AJAX添加到JSF应用程序中。这是一种“要么全有,要么全无”的事情——任何使用IceFaces的页面都将使用AJAX。

    我认为你能做的唯一一件事就是不要在你想使用POST请求的页面上使用IceFaces,也就是说,你可以将IceFaces页面映射到*.iface,而将普通JSF映射到*.faces。

    或者,也可能有其他方法来完成您想要使用过滤器的操作。

        2
  •  1
  •   Drew    16 年前

    方法为了便于讨论,我将假设您的头包含了额外的登录表单。如果要在单独的框架或主布局页面中创建标题,并将JSF页面嵌入到iframe中,这可能会起作用。这个想法是因为它被呈现为一个单独的页面,所以你可以用一种单独的方式来处理它。

    最后,我知道有几个框架(SpringWebFlow, 弹簧 记住)这将保存您的请求状态,让您进行登录,并将您重新定向到最初的位置(提醒我,我认为Seam也可以做到这一点。可能还有Orchestra和您的其他框架。)

    希望这有帮助!

    推荐文章