Он возвращает список, подобный массиву.
Вы делаете этот массив как пример
var el = getElementsByClassName("elem");
el = Array.prototype.slice.call(el); //this line
el[0].appendChild(otherElem);
Теги JSTL и компоненты интерфейса JSF не синхронизируются, как вы ожидали от кодирования. Короче говоря: JSTL в JSF2 Facelets ... имеет смысл? Внимательно прочитайте это.
В вашем конкретном случае условие тега JSTL <c:if>
, похоже, зависит от результат тега JSF <f:event>
. В настоящий момент <c:if>
запускается во время времени сборки, <f:event>
еще не запущен, поскольку он выполняется во время предварительного просмотра представления. Следовательно, #{mBlog.blog.id}
всегда null
или любое другое значение по умолчанию.
Вместо этого вам нужно использовать атрибут rendered
компонента JSF. Это также улучшает ваш код.
<h:commandButton value="Update" action="#{mBlog.update}" rendered="#{mBlog.blog.id gt 0}" />
<h:commandButton value="Save" action="#{mBlog.save}" rendered="#{mBlog.blog.id eq 0}" />
У вас есть еще одна потенциальная будущая проблема при вызове действия. Убедитесь, что компонент вставляется в область видимости, а не в область запроса.
f:event
делает в метод@PostConstruct
, и использовать@ManagedProperty
вместо<f:viewParam>
. – BalusC 20 March 2012 в 21:31