我对 ICEfaces 还很陌生,但总体上已经有 JSF/Facelets 和 Java EE 的经验。
目前,除了一些实用程序标签(如 outputStyle 和 outputDeclaration)之外,我并没有使用太多 ICEfaces,但即使这样也真的很不错。
尽管我计划稍后使用一些 AJAX 功能,但我有一些 h:forms(或 ice:forms)我想作为正常的 JSF POST 请求发送,而不通过 /block/send-receive-updates。原因是,我想使用一个过滤器,它作用于请求的 URI,如果所有内容都发送到 /block/send-receive-updates,这是不可能的。
有没有办法做到这一点?
编辑:澄清我想要做什么:
我们正在开发的网站由公开的页面和一些只有注册会员才能访问的页面组成。servlet 标准中定义的基于 FORM 的标准安全机制非常不灵活,因为它只允许定义显示的单个登录页面,当有人想要访问某些受限内容时。因为我们还希望用户能够使用每个页面上可见的小型登录表单来登录,所以我们开发了一个过滤器,它几乎像 Web 容器一样处理身份验证和授权。如果用户未经过身份验证/授权,它会重定向到自定义登录页面,但也允许从支持 bean 对用户进行身份验证。为了使其工作几乎透明,它包装了 HttpServletRequest 以提供 Principal 和用户角色。
当过滤器重定向到自定义登录页面时,它会保存当前请求,以便稍后在用户成功通过身份验证时“重放”它。为此,过滤器必须能够检测 POST 请求是否来自登录页面(因此用户现在是否已通过身份验证/授权)。但是,如果每个 POST 都通过 /block/send-receive-updates 进行,这将不再起作用。
当然,我可以排除登录页面由 ICEfaces 处理,但这意味着我不能在登录页面上使用任何 ICEfaces/AJAX。