h:commandLink拒绝调用方法并随机重定向到项目根目录

时间:2013-02-26 21:30:14

标签: jsf jsf-2 commandlink

我一直在讨论这个问题......我有很多项目都有一个有效的commandLink元素,但是我不能在我的生活中让它在这个项目中工作。我在这里遵循了BalusC的回应:commandButton/commandLink/ajax action/listener method not invoked or input value not updated直到信,但仍然没有快乐。

目前,我已将代码简化为尽可能简单:

@ManagedBean
@SessionScoped
public class TestBean {

    private @Inject transient Logger logger; 

    public void testEvent(ActionEvent actionEvent) {
        logger.log(Level.INFO, "Event Fired!!");
        return;
    }
}

在我的xhtml文件中,我有:

<h:form>
   <h:commandLink id="test" actionListener="#{testBean.testEvent}" value="Test Me!"/>
</h:form>

当我点击链接时,不调用该方法,并且我被重定向到web-apps根目录(登录页面,尽管有登录过滤器:/)如果我将链接更改为commandButton,它按预期工作。

当前应用程序使用ui:composition标签进行模板化,并且我已经对嵌套的h:form标签进行了三重检查,我没有使用任何ajax调用或其他JS库。我的模板实现了重要的jsf标签,即h:head,h:body等。任何人都可以为我遇到的奇怪行为提供任何指示或可能的原因吗?

最后,我在我的web-app中的各个页面上测试了这个commandLink,并且一般只是拒绝调用commandLink元素。

如果有人有兴趣,这是我链接的编译html:

<form id="j_idt26" name="j_idt26" method="post" action="/my-project/webpages/Login.xhtml" enctype="application/x-www-form-urlencoded">
   <input type="hidden" name="j_idt26" value="j_idt26" />
   <a id="j_idt26:test" href="#" onclick="mojarra.jsfcljs(document.getElementById('j_idt26'),{'j_idt26:test':'j_idt26:test'},'');return false">Test Me!</a><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="-109553560791909389:-730254890454894147" autocomplete="off" />
</form>

1 个答案:

答案 0 :(得分:0)

重建项目后,commandLinks正常工作,我无法在新项目中重现错误。如果我有时间,我会尝试调试我的原始项目并确定原始问题是什么。