微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xpages:“部分执行无效的组件 ID 为空”

如何解决Xpages:“部分执行无效的组件 ID 为空”

我真的很想找出它卡在哪个组件中。 Stack Trace 的前几行是:

com.ibm.xsp.FacesExceptionEx: Invalid component id null for partial execution
at com.ibm.xsp.renderkit.html_extended.EventHandlerRenderer.appendSubmitJS(EventHandlerRenderer.java:211)
at com.ibm.xsp.renderkit.html_extended.EventHandlerRenderer.processHandlers(EventHandlerRenderer.java:151)
at com.ibm.xsp.renderkit.html_extended.EventHandlerRenderer.encodeBegin(EventHandlerRenderer.java:86)
at com.ibm.xsp.renderkit.ReadOnlyAdapterRenderer.encodeBegin(ReadOnlyAdapterRenderer.java:146)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:956)
at com.ibm.xsp.component.UICommandEx2.encodeBegin(UICommandEx2.java:395)
at com.ibm.xsp.component.UIEventHandler.encodeBegin(UIEventHandler.java:329)
at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:841)

页面上的组件太多,无法一一测试,所以更通用的方法会更好。一个或多或少的简单解决方案可能是扩展一个类并使其在出现错误显示更多信息,如下所示:

package com.acme;

import java.io.IOException;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;

public class EventHandlerRenderer extends com.ibm.xsp.renderkit.html_extended.EventHandlerRenderer {
  public void encodeBegin(FacesContext arg0,UIComponent arg1) throws IOException  {
    try {
        System.out.print("encoding " + arg1.getId());
        super.encodeBegin(arg0,arg1);
    } catch (IOException e) {
        throw(e);
    }
  }
}

如果可能的话,也可以为 UIComponentBase 类执行此操作。问题是:我不知道如何在 faces-config.xml 中启用它。

谁能告诉我如何获得有关导致此错误的组件的一些指示?谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。