从自定义组件中调用另一个JSF组件

从自定义组件中调用另一个JSF组件,jsf,jsf-2,primefaces,custom-component,Jsf,Jsf 2,Primefaces,Custom Component,是否可以从自定义组件中调用另一个JSF组件(而不是从复合组件) 特别是,我希望从另一个组件的encodeEnd方法中调用PrimeFaces消息组件 我(天真地)希望有这样的事情: @Override public void encodeEnd(FacesContext context, UIComponent component) throws java.io.IOException { // Do stuff... // set up Message ob

是否可以从自定义组件中调用另一个JSF组件(而不是从复合组件)

特别是,我希望从另一个组件的encodeEnd方法中调用PrimeFaces消息组件

我(天真地)希望有这样的事情:

@Override
public void encodeEnd(FacesContext context, UIComponent component)
        throws java.io.IOException {

    // Do stuff...

    // set up Message object
    // tell Message object the current component's id
    // render Message object
}
这应该做到:

import org.primefaces.component.message.Message;

// ...

Message message = new Message();
message.setParent(component);
message.setFor(component.getId());
message.encodeAll(context);

啊,我差一点就到了。我错过了这条信息。设置为步骤,然后确信我做了完全错误的事情。然而,一个问题仍然存在。现在我得到了错误消息,我也得到了在组件本身之前产生的错误消息,它是通过表单提交的次数复制的!是的,这就是我最初的回答。你检查过我14分钟前做的更新了吗?请注意,这通常不是添加子项的完全正确位置(因此我最初的方法意外失败)。您更愿意在
postAddToView
事件期间执行此操作。请尝试一下。不幸的是,我在message.setParent(component)行
上收到一个错误。警告:StandardWrapperValve[Faces Servlet]:PWC1406:Servlet.service()用于Servlet Faces Servlet在com.sun.Faces.application.view.StateManagementStrategyImpl$4处抛出异常java.lang.NullPointerException
postAddToView?哦,我在这里的深度越来越深……现在将setParent添加到我的搜索中,这篇文章由PrimeFaces的作者Cagatay撰写,内容基本相同。message.setParent仍然让我大吃一惊:(你使用的是什么Mojarra版本?我在2.1.9上进行了测试,效果很好。