0

我一直在为这个问题摸不着头脑......我有很多带有工作 commandLink 元素的项目,但是我一辈子都无法让它在这个项目中工作。我在这里关注了 BalusC 的响应:commandButton/commandLink/ajax action/listener 方法未调用或输入值未更新到字母,但仍然没有乐趣。

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

@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 应用程序的各个页面上测试了这个 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>
4

1 回答 1

0

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

于 2013-03-01T08:13:48.120 回答