是否可以调试重复的 ID?
Is it possible to debug for duplicate Ids?
我收到重复 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 为此提供了 <ui:debug>
,在 JSF 1.x 中,您必须编写自定义代码来递归地遍历和打印 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 引起的。不要那样做。
另请参阅:
- How does the 'binding' attribute work in JSF? When and how should it be used?
- Binding attribute causes duplicate component ID found in the view
我收到重复 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 为此提供了 <ui:debug>
,在 JSF 1.x 中,您必须编写自定义代码来递归地遍历和打印 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 引起的。不要那样做。
另请参阅:
- How does the 'binding' attribute work in JSF? When and how should it be used?
- Binding attribute causes duplicate component ID found in the view