JSF2 MyFaces и CDATA приводят к сбою рендеринга f: ajax - PullRequest
0 голосов
/ 31 октября 2011

Я сталкиваюсь с некоторыми проблемами при использовании блоков CDATA внутри h: outputcripts с MyFaces 2.0 ... но я не знаю точно, следует ли мне избегать использования CDATA с JSF2 или это потому, что я что-то делаю неправильно.Может быть, это потому, что я использую много скриптов во многих компонентах Composite ...Дело в том, что когда у меня есть несколько составных компонентов, которые содержат сценарии, окруженные блоками CDATA, другие сценарии на странице не работают.Удаление CDATA решает проблему.Тем не менее, у меня была проблема, когда использование блоков CDATA приводило к ошибке некоторых из моих компонентов Composite, говоря, что свойство компонента не может быть найдено в классе NamingContainer при попытке рендеринга компонента с использованием атрибута рендеринга f: ajax. Вот обходной путь .Удаление CDATA, окружающего мои скрипты, решило проблему.Итак, мой вопрос: у меня только проблемы с блоками CDATA и JSF2 (MyFaces)?

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

Это известная проблема. Подробнее см. MYFACES-3339 . Он уже исправлен, поэтому вы можете попробовать последний код ЗДЕСЬ , и он будет включен в 2.1.4 и 2.0.10.

1 голос
/ 01 ноября 2011

Я не могу ответить, если у вас единственная проблема с этим. Я могу, по крайней мере, ответить, что использование простого кода JS в XML-файле - плохая практика. Код JS не является правильно сформированным XML. Возиться с экранированием специальных символов XML в коде JS или поместить код JS в блоки CDATA - это просто уродливо. То, что это вызывает проблемы в ответе JSF ajax, - это, в свою очередь, другая история. Технически, это было бы ошибкой в ​​используемой реализации JSF. Но с другой стороны, вы на самом деле практикуете плохую практику.

Просто поместите код JS в собственный файл .js, на который вы ссылаетесь <h:outputScript>.

<cc:implementation>
    <h:outputScript library="foo" name="js/your-cc-script.js" target="head" />
    ...
</cc:implementation>
...