JSON и массив из XML в трех строках:
$xml = simplexml_load_string($xml_string);
$json = json_encode($xml);
$array = json_decode($json,TRUE);
Ta da!
Посмотрите ближе на трассировку стека. Вот соответствующая часть:
...
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.
У вас есть несколько вариантов:
\
, как в \#{screenShotBean.takeScreenshot}
, чтобы они не были оценены. <ui:remove>
, чтобы он не отображался в дереве компонентов (а также в сгенерированном выходе HTML). web.xml
: <context-param>
<param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
<param-value>true</param-value>
</context-param>
Обратите внимание, что ни один комментарий в итоге не будет создан в результате генерируемого HTML-вывода. В дополнение к параметрам , которые уже предоставлены BalusC , вы также можете добавить атрибут rendered="false"
к вашему commandLink
.
Если у вас есть несколько компонентов, которые вы хотите использовать для быстрого переключения вы можете захотеть создать свойство отладки в компоненте или использовать этап проекта:
rendered="#{facesContext.application.projectStage == 'Development'}"
Вы также можете использовать параметр контекста, который пропускает комментарии в вашем web.xml.
Это параметр:
javax.faces.FACELETS_SKIP_COMMENTS