JSF AjaxStatusTag如何以编程方式添加

时间:2010-08-21 22:04:19

标签: jsf richfaces

我努力了但是我无法在我的页面中插入简单的Richfaces AjaxStatusTag。我从Java代码生成组件,而不是xhtml。这就是我的工作:

    AjaxStatusTag deleteStatus = new AjaxStatusTag();
    FacetTag start = new FacetTag();
    start.setName("start");
    HtmlGraphicImage pic = new HtmlGraphicImage();
    pic.setUrl("/resources/images/ajaxLoaderLong.gif");
    pic.setAlt("ajaxLoaderLong.gif");
    start.setValue("start", pic); //how to add pic to FacetTag?
    start.setParent(deleteStatus);

我甚至不确定FacetTag ......其他情况,例如要有一个带链接的简单Div,很容易获得div的子项然后添加到该集合的链接,但AjaxStatusTag和FacetTag是不同,我不知道如何解决这个问题。

感谢任何帮助!

欢呼声, 巴拉兹

1 个答案:

答案 0 :(得分:0)

好的,所以我解决了。这是我做的:

private static void renderAjaxStatus(UIComponent holderRegion, HtmlAjaxCommandLink ajaxLink, String statusID) {

        UIComponent status = FacesContext.getCurrentInstance().getApplication().createComponent(HtmlAjaxStatus.COMPONENT_TYPE);
        status.setId(STATUS_ID + statusID);
        HtmlPanelGroup panelGroup = (HtmlPanelGroup) FacesContext.getCurrentInstance().getApplication().createComponent(HtmlPanelGroup.COMPONENT_TYPE);

        Div div = new Div();
        div.setStyleClass(STATUS_COVER);

        HtmlGraphicImage pic = new HtmlGraphicImage();
        pic.setUrl(RESOURCES_IMAGES_AJAX_LOADER_GIF);
        pic.setAlt(STATUS_ID);
        pic.setStyleClass(STATUS_PIC_STYLECLASS);

        panelGroup.setStyleClass(STATUS_PANEL_STYLECLASS);
        panelGroup.getChildren().add(div);
        panelGroup.getChildren().add(pic);

        deleteStatus.getFacets().put("start", panelGroup);
        holderRegion.getChildren().add(status);

        ajaxLink.setStatus(STATUS_ID + statusID);
}

欢呼声, 巴拉兹