基本的JSF 2和tomcat 6动作结果导航问题

问题描述 投票:1回答:3

我在tomcat 6上有一个带有mojara EL 2.2的JSF 2.0,并且在开发期间它已经工作了一段时间。我最近添加了一个带有登录命令按钮的表单(基本内容),它在动作doLogin中检查托管bean中的用户名和密码。

public String doLogin(){
    FacesMessage message = null;
    if((username.equals("user"))&&(password.equals("pass")))
        return "testpage.xhtml";
    else
        message = new FacesMessage("Invalid username or password");

    FacesContext.getCurrentInstance().addMessage(null, message);

    return null;
}

问题是,在通过doLogin并返回“testpage.xhtml”后,将显示相同的页面。即使我在WebContent的根目录中拥有所有xhtml的文件。

在tomcat的控制台中,我得到:

JSF的ELResolvers未在JSP容器中注册。

使用EL 2.2传递参数工作正常。

我正在使用带有Facelets的JSF。

java jsf tomcat6
3个回答
0
投票

自JSF 2.0以来引入了隐式导航。在旧的JSF 1.x中,您需要在<navigation-rule>中定义faces-config.xml或在URL上显式调用ExternalContext#redirect()

此问题表明您的JSF 2.0 Web应用程序正在JSF 1.x回退模式中运行。确保您的faces-config.xml声明符合JSF 2.0规范版本。

<?xml version="1.0" encoding="UTF-8"?>

<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">

    <!-- Config here. -->

</faces-config>

EL解析器警告与此无关。这是因为在Tomcat 6上使用Glassfish的EL 2.2而你无法在.jsp页面中使用EL(如果你只使用Facelets,这应该不是问题)。如果您想摆脱此警告,请使用JBoss EL而不是Glassfish EL。 JBoss EL是增强型EL 2.1实现,而Glassfish EL是EL 2.2实现。


0
投票

我不确定,B'coz我没有看到另一个代码。

如果未在faces-config.xml中设置特定的导航规则。

$ SUB-DIRECTORY 1 / test page.xhtml的默认值是$ SUB-DIRECTORY 1 /测试页面


0
投票

在JSF 2.0中将testpage视图翻译成隐式导航。请在这里更改您的代码,

    public String doLogin(){
       FacesMessage message = null;
       if((username.equals("user"))&&(password.equals("pass"))) {
            return "testpage";
       } else {
            message = new FacesMessage("Invalid username or password");
            FacesContext.getCurrentInstance().addMessage(null, message);
       }
    return null;
}
© www.soinside.com 2019 - 2024. All rights reserved.