0

我正在为学校做一个项目。我正在使用 JSF 和 Primefaces。但是在 JSF 项目中调用 HTML5 文件时使用 Servlet 过滤器检查授权。因为 JSF 不支持 HTML5。项目有一个 HTML5 页面。必须登录才能到达此页面。但是,在未登录的情况下调用 HTML5 文件时,我无法打开弹出窗口、消息或咆哮。

我可以在 LoginFilter 中使用 FacesMessage 吗?

代码:

@WebFilter(urlPatterns = {  "/design.html" , "/demodesign.html" } )
public class LoginFilter implements Filter{
@Override
public void doFilter(ServletRequest req, ServletResponse res,
        FilterChain chain) throws IOException, ServletException {

    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;
    HttpSession session = request.getSession(false);

    UserBean userBean = (UserBean) ((session != null) ? session.getAttribute("userBean") : null);
    User member = null;

    if ( !(userBean == null) )
        member = userBean.getMember();

    if (member != null) {
        chain.doFilter(request, response);
    } else {
        response.sendRedirect(welcomeURL);
    }

}
 }
4

1 回答 1

2

因为 JSF 不支持 HTML5

这完全是胡说八道。JSF 只是一个 HTML 代码生成器。它可以毫无问题地生成合法的 HTML5 代码。<canvas>您可以像在 JSF 页面中一样放置“普通的”HTML5 元素。它只会松开它并按原样输出。JSF 可以为您做的更多事情就是将它包装在一个自定义/复合组件<my:canvas>中,这样提交的值就会立即更新为 bean 属性,并且您可以执行验证并在其上附加侦听器,而无需任何额外的努力。

只需将这些 HTML 文件重命名为.xhtml*.xhtmlFacesServlet. 这样您就可以在那些所谓的 HTML5 页面上使用 JSF 组件。

也可以看看:

于 2012-12-24T12:21:03.077 回答