2

我正在尝试使用 JSF 2(使用 NetBeans)实现一个非常基本的(此时)登录屏幕。我找到了几个例子,我从中复制了源代码,但到目前为止没有成功。在我的 login.xhtml 文件中,我有 2 个输入字段和一个命令按钮 -

<h:commandButton value="go!" actionListener="#{LoginBean.CheckValidUser}" />

在我的 LoginBean 中,验证函数如下所示 -

public String CheckValidUser() { 
    if(username.equals("admin") && password.equals("admin")){ 
        return "welcome"; 
    } 
    else{ 
       return "fail";
    } 
} 

并在我的 faces-config.xml 中添加了以下导航规则:

<navigation-rule>
    <description>login success</description>
    <from-view-id>/login.xhtml</from-view-id>
    <navigation-case>
        <from-action>#{LoginBean.CheckValidUser}</from-action> 
        <from-outcome>welcome</from-outcome>
        <to-view-id>/welcome.xhtml</to-view-id>
        <redirect/>
    </navigation-case>
</navigation-rule>

无论如何-我只是不会工作,我输入了正确的联合国和密码,但我没有进入'welcome.xhmtl'。当我调试代码时,我在验证函数中看到它按预期工作,但我可以知道 faces-config.xml 配置正确吗?

我错过了什么?干杯,埃雷兹

4

1 回答 1

1

这里,

<h:commandButton value="go!" actionListener="#{LoginBean.CheckValidUser}" />

您应该使用action而不是actionListener. 相应地修复它:

<h:commandButton value="go!" action="#{LoginBean.CheckValidUser}" />

动作侦听器应该返回void并且它们不打算导航。

也可以看看:


与具体问题无关<navigation-rule>的,干脆去掉。从具有新的隐式导航支持的 JSF 2.0 开始就没有必要了。will的结果已经"welcome"隐含地去"welcome.xhtml"。确保您正在阅读面向 JSF 2.x 的资源/书籍/教程,而不是 JSF 1.x 的。与 JSF 1.x 相比,JSF 2.x 是一个重大变化。

也可以看看:

于 2012-03-06T22:06:58.753 回答