Я создаю простую страницу, которая после нажатия кнопки заменит одну группу Panel на другую. Во-первых, код:Оказание компонента вне области формы в JSF2
<h:body>
<ui:composition template="/elements/templateWithMenu.xhtml">
<ui:define name="content">
<div class="rightContent">
<h:panelGroup id="lol" rendered="#{test.firstStep.booleanValue()}">
<h3>This should disappear</h3>
<h:form id="newPollForm1" rendered="#{test.firstStep.booleanValue()}">
<fieldset>
<h:commandLink value="Next" action="#{test.firstStepCompleted()}" >
<f:ajax execute="@all" render="lol" />
</h:commandLink>
</fieldset>
</h:form>
</h:panelGroup>
<h:panelGroup rendered="#{test.secondStep.booleanValue()}">
Works!
</h:panelGroup>
</div>
</ui:define>
</ui:composition>
</h:body>
Бэк-бэнд просто устанавливает firstStep как false, а secondStep - как истинный.
Теперь, когда я попытался запустить это, я получил <f:ajax> contains an unknown id 'lol' - cannot locate it in the context of the component j_idt39
. После небольшого поиска в Google я обнаружил, что для элементов вне области формы мне нужно использовать SEPARATOR_CHAR (:). Это не сработало. Поэтому я попытался использовать разные комбинации # {component} и # {cc}, но ничего не работает. Я даже нашел this удивительное объяснение, но опять же я потерпел неудачу. Если я использую @all, все будет нормально (одна панель заменяется на другую), но мне действительно нужно отобразить конкретный компонент.
Помощь? Пожалуйста?
Как вы использовали 'SEPARATOR_CHAR (:)'? Не можете ли вы просто использовать CSS \ js для достижения этого? –
': lol' и несколько других ': something: somethingElse: lol' (я удалил прикрепленный xhtml столько, сколько мог). – Misa