Firefox Wicket + Nitobi XHTML Ошибка анализа пространства имен - PullRequest
1 голос
/ 20 октября 2010

У меня проблема с использованием нескольких пространств имен 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 Ответ

1 голос
/ 20 октября 2010

Я обнаружил, что проблема вызвана наличием 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);
}
...