Jsf <;p:commandButton>;不';当actionListener=&x201C#{bean.method}”;宣布

Jsf <;p:commandButton>;不';当actionListener=&x201C#{bean.method}”;宣布,jsf,primefaces,facelets,Jsf,Primefaces,Facelets,我正在尝试创建一个页面,允许用户登录到系统,然后导航到主页。我已经设法让它做了一个或另一个,但无法解决如何让它做这两个。我浏览了所有的网站,找不到合适的答案。请帮忙。我的代码如下: XHTML: 以下是我的faces-config.xml: <faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocat

我正在尝试创建一个页面,允许用户登录到系统,然后导航到主页。我已经设法让它做了一个或另一个,但无法解决如何让它做这两个。我浏览了所有的网站,找不到合适的答案。请帮忙。我的代码如下: XHTML:

以下是我的faces-config.xml:

<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">
<navigation-rule>
    <from-view-id>/login.xhtml</from-view-id>
    <navigation-case>
        <from-action>#{login.login}</from-action>
        <from-outcome>loggedin</from-outcome>
        <to-view-id>/ProEJT.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

/login.xhtml
#{login.login}
洛格丁
/ProEJT.xhtml

当我尝试这样做时,我将我的登录方法的返回更改为“loggedin”


谢谢你事先的帮助

操作侦听器不应该执行业务逻辑和导航。他们应该倾听行动事件。业务逻辑和导航应该在真实的操作方法中完成

替换

<p:commandButton ... actionListener="#{login.login}" />

一切都会好起来的

另见:

什么是jsf和primefaces版本?您查看过这个网站吗嗨,我正在使用jsf 2.1和primefaces 3.4。我看到了一个类似的建议,但是,它对我不起作用。我将用我尝试过的faces-config.xml编辑我的问题。我忘了提到我也在使用TomCat 7。感谢一些提示:当使用非ajax命令按钮时,请使用
action
而不是
actionListener
。不要同时使用隐式导航(
返回“ProEJT?faces redirect=true”
)和faces配置导航规则,它们是冗余的。您已将托管bean声明为
@ViewScoped
@SessionScoped
,应该是什么?谢谢您,BalusC。你有所有的答案!!我设法解决了这个问题,但不知道为什么会奏效。现在我知道了。我还有一个关于素面的问题[如果你有时间看的话。再次感谢巴卢斯!!!!
<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">
<navigation-rule>
    <from-view-id>/login.xhtml</from-view-id>
    <navigation-case>
        <from-action>#{login.login}</from-action>
        <from-outcome>loggedin</from-outcome>
        <to-view-id>/ProEJT.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>
<p:commandButton ... actionListener="#{login.login}" />
<p:commandButton ... action="#{login.login}" />