如何将MyFaces与Spring集成

时间:2014-07-22 15:23:11

标签: spring jsf integration myfaces

在我的logon.xhtml中,我有以下代码涉及我的支持bean,以通过spring security执行correspopnding登录。

<h:commandButton type="submit" id="login" value="Login"
action="#{logonController.doLogin}" />

我的支持bean定义如下。

@Component
@ManagedBean(name="logonController")
@SessionScoped
public class LogonController
{
. . .
public String doLogin() throws ServletException, IOException {
    ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
    RequestDispatcher dispatcher = ((ServletRequest) context.getRequest())
            .getRequestDispatcher("/j_spring_security_check");
    dispatcher.forward((ServletRequest) context.getRequest(),
            (ServletResponse) context.getResponse());
    FacesContext.getCurrentInstance().responseComplete();
    logger.debug("in LogonPageController ");
    return null;
}
}

为了将spring与JSF集成,我还在faces-config.xml中添加了以下内容。

<application>
    <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>

此外,web.xml中还包含两个标准的spring监听器

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
    <listener-class>
        org.springframework.web.context.request.RequestContextListener
    </listener-class>
</listener>

我在mojarra + tomcat中尝试了上面的设置,当用户点击登录按钮时,它应该能够触发我的支持bean的logon()函数。但是,当我用MyFaces与TomEE交换时,这将无效。我的pom.xml中有以下maven依赖项。

<dependency>
    <groupId>org.apache.myfaces.core</groupId>
    <artifactId>myfaces-api</artifactId>
    <version>${myfaces-version}</version>
</dependency>
<dependency>
    <groupId>org.apache.myfaces.core</groupId>
    <artifactId>myfaces-impl</artifactId>
    <version>${myfaces-version}</version>
</dependency>

为了让它与MyFaces一起使用,我需要添加任何东西吗? 谢谢你的帮助。

0 个答案:

没有答案