是否可以调试重复的id



我得到一个重复的id错误,但我不知道是哪个元素的意思。

java.lang.IllegalStateException: duplicate Id for a component pb_1_WAR_TEST_INSTANCE_1234_:_viewRoot:mainForm:tableOverview:j_id66

我知道它必须在tableOverview中,但ID为:找不到j_id66。当我在浏览器中搜索它时,我只能找到具有较高Id的元素,例如

pb_1_WAR_TEST_INSTANCE_1234_:_viewRoot:mainForm:tableOverview:j_id67

有办法找出哪个是指的吗?

很可能是<h:column><rich:column>

快速找出确切成分的方法是findComponent():

UIComponent component = context.getViewRoot().findComponent("pb_1_WAR_TEST_INSTANCE_1234_:_viewRoot:mainForm:tableOverview:j_id66");
System.out.println(component); // HtmlColumn?

或者,只打印出JSF组件树。JSF 2。x在JSF 1中为此提供了<ui:debug>。你必须编写自定义代码,递归地遍历和打印UIViewRoot及其所有子节点。下面是一个启动示例:

public static void print(UIComponent component) {
    System.out.println(component.getId() + " = " + component.getClass());
    for (UIComponent child : component.getChildren()) {
        print(child);
    }
}
print(context.getViewRoot());

至于您的具体问题,很可能是由于将组件绑定到不在请求范围内的bean而引起的。别那样做。

参见:

  • 如何'绑定'属性在JSF中工作吗?何时以及如何使用?
  • 绑定属性导致在视图
  • 中发现重复的组件ID

相关内容

  • 没有找到相关文章

最新更新