Почему управляемое свойство bean в прокомментированной строке в файле .xhtml все еще генерирует javax.el.PropertyNotFoundException error [duplicate]

JSON и массив из XML в трех строках:

$xml = simplexml_load_string($xml_string);
$json = json_encode($xml);
$array = json_decode($json,TRUE);

Ta da!

7
задан BalusC 5 January 2016 в 16:05
поделиться

3 ответа

Посмотрите ближе на трассировку стека. Вот соответствующая часть:

...
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
com.sun.faces.facelets.el.ELText$ELTextVariable.toString(ELText.java:217)
com.sun.faces.facelets.el.ELText$ELTextComposite.toString(ELText.java:157)
com.sun.faces.facelets.compiler.CommentInstruction.write(CommentInstruction.java:77)
...

Таким образом, вычисляется EL в блоке комментариев (распознается CommentInstruction). Блок комментариев рассматривается как текст шаблона. Facelets оценивает по умолчанию также EL #{} в тексте шаблона. Это похоже на то, что вы пишете <p>#{screenShotBean.takeScreenshot}</p> без какого-либо тега JSF.

У вас есть несколько вариантов:

  1. Полностью удалить блок комментариев.
  2. Выразить EL-выражения в комментарии, префикс его \, как в
    \#{screenShotBean.takeScreenshot}
    
    , чтобы они не были оценены.
  3. Оберните весь блок комментариев в <ui:remove> , чтобы он не отображался в дереве компонентов (а также в сгенерированном выходе HTML).
  4. Отключить синтаксический анализ всех комментариев с помощью Facelets, добавив следующий параметр контекста в web.xml:
    <context-param>
        <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
        <param-value>true</param-value>
    </context-param>
    
    Обратите внимание, что ни один комментарий в итоге не будет создан в результате генерируемого HTML-вывода.
16
ответ дан BalusC 26 August 2018 в 19:00
поделиться

В дополнение к параметрам , которые уже предоставлены BalusC , вы также можете добавить атрибут rendered="false" к вашему commandLink.

Если у вас есть несколько компонентов, которые вы хотите использовать для быстрого переключения вы можете захотеть создать свойство отладки в компоненте или использовать этап проекта:

rendered="#{facesContext.application.projectStage == 'Development'}"
2
ответ дан Community 26 August 2018 в 19:00
поделиться

Вы также можете использовать параметр контекста, который пропускает комментарии в вашем web.xml.

Это параметр:

javax.faces.FACELETS_SKIP_COMMENTS 
1
ответ дан Tiago PC 26 August 2018 в 19:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: