Firefox Wicket + Nitobi XHTML ошибка анализа пространства имен
У меня возникла проблема с использованием нескольких пространств имен XML в документе XHTML. В частности, я пытаюсь использовать Wicket и Nitobi в одном документе.
Код выглядит примерно так:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd"
xmlns:ntb="http://www.nitobi.com">
... blah blah blah ...
<wicket:extend>
<div wicket:id="gridContainer">
<wicket:panel>
<ntb:grid wicket:id="grid" id="grid14" width="660" height="600" mode="livescrolling">
</ntb:grid>
</wicket:panel>
</div>
</wicket:extend>
... blah blah blah ...
В заголовке также есть код, который вызывает код инициализации сетки Nitobi, который в основном пытается получить XML-код ntb: grid. Однако, когда я выполняю эту инициализацию с помощью Firebug, я вижу, что Firefox использует синтаксический анализ XML с этой ошибкой:
Parsing Error: prefix not bound to a namespace
Location: http://localhost:8080/foo/bar
Line Number 1, Column 1:
<ntb:grid xmlns:ntb="http://www.nitobi.com" mode="livescrolling" height="600" width="660" id="grid14" wicket:id="grid">
</ntb:grid>
Что я делаю неправильно? У меня есть ощущение, что проблема связана с тем, как <ntb>
теги вложены в <wicket>
теги.
1 ответ
Я обнаружил, что проблема была вызвана наличием wicket:id
на ntb:grid
элемент. Обходной путь должен был лишить wicket:
теги пространства имен со страницы, как указано здесь:
https://cwiki.apache.org/WICKET/how-to-remove-wicket-markup-from-output.html
Вот соответствующие части:
private boolean stripTags;
public TestPage() {
stripTags = getApplication().getMarkupSettings().getStripWicketTags();
}
@Override
protected void onBeforeRender() {
getApplication().getMarkupSettings().setStripWicketTags(true);
}
@Override
protected void onAfterRender() {
getApplication().getMarkupSettings().setStripWicketTags(stripTags);
}