无法将url和actionListener放在一起

时间:2017-05-19 17:07:29

标签: jsf jsf-2 jsf-2.2 icefaces-3

我是JSF和UI的新手。 我希望当我点击子菜单时,我的业务逻辑应该执行,之后我的页面会呈现。我尝试了下面的代码片段,但它不起作用,页面正在渲染,但actionListener没有被执行。当我删除url部分时,actionListener正在运行,但现在我不知道如何渲染页面。

<ace:menuItem id="RedactionCapture" value="Redaction"
    actionListener="#{redactionController.getRedactionList}"
    url="#{firmUtility.legalHoldCreationOrRemovalUrl}"
    style="width:220px" styleClass="dropdownmenu"
    target="imagepgframe">
</ace:menuItem>

1 个答案:

答案 0 :(得分:2)

这是预期的行为。 actionListeneraction的监听器,而不是URL的监听器。您可以创建一个action,它会与侦听器一起重定向到URL,或者执行操作中的所有工作。请注意,这不仅适用于IceFaces,也适用于PrimeFaces。

例如(使用监听器),XHTML:

<ace:menuItem action="#{yourBean.redirect(firmUtility.legalHoldCreationOrRemovalUrl)}"
              actionListener="#{redactionController.getRedactionList}"
              ... />

豆:

public void redirect(String url) throws IOException {
    ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
    externalContext.redirect(url);
}

另见: