В одном из моих приложений JSF у меня есть часть заголовка наверху, содержащая selectOneMenu, а часть контента внизу, на которой отображаются, говорят, компоненты фильтра. По умолчанию приложение отображает сначала selectOneMenu данные вверху и соответствующую информацию фильтра внизу. Если пользователь выбирает разные данные selectOneMenu, соответствующая информация фильтра должна быть загружена на нижней части содержимого.JSF Показать/скрыть компоненты div
Компонент фильтра имеет команду CommandButton и заполняет пользователя. Информация об фильтре. При щелчке по кнопке и одобрении фильтра приложение должно загрузить другой компонент - Report.xhtml вместо компонента Filter. То есть компонент Filter должен быть заменен на Report on bottom content part.
Нажмите кнопку selectOneMenu, чтобы повторить процесс. Это экран экрана фильтра и так далее.
Проблемная область 1. Невозможно отобразить Форма фильтра и скрыть Форма отчета на контентной части 2. Бэк-файл фильтра - commandButton OK должен возвращать значение. В зависимости от результата, отчет должен отображаться вместо фильтра.
Я не уверен, что дизайн является точным, если это не будет работать должным образом, пожалуйста, предложите и ваши ценные ответы будут оценены. Я хотел бы сохранить приложение на основе ajax, и я не хочу перезагружать всю страницу на событие кнопки.
ГДК
<h:form id="form1">
<h:selectOneMenu value="#{states.stateName}">
<f:selectItems value="#{states.stateChoices}"/>
<f:ajax render=":Filter"/>
</h:selectOneMenu>
</h:form>
<h:form id="Filter">
<div id="content">
<h:panelGroup id="one" rendered="Need a condition from form1 to display this">
#{states.stateName}
<br/>Report
<h:inputText id="report" value="#{Counties.report}" style="width:150px"/>
<h:commandButton id="OK" value="OK" actionListener="#{Counties.getReports}">
<f:param name="CatName" value="Dekalb" />
</h:commandButton>
</h:panelGroup>
</div>
</h:form>
<h:form id="Report">
<div id="content">
<h:panelGroup id="two" rendered="#{should be rendered on acceptance from OK command button}">
<ui:include src="Report.xhtml"/>
</h:panelGroup>
</div>
</h:form>
Здравствуйте, BalusC, Большое вам спасибо. Это действительно решило мою проблему. Я очень ценю ваш быстрый ответ. (После отображения report.xhtml содержимого, нажмите selectOneMenu, элемент должен снова отобразить Фильтр. Метод action = "" в не решил проблему, так как она не сбросила «принятую» на false в методе Поэтому я добавил кнопку рядом с элементом selectOneMenu. Этот метод служит цели) GDK –
GDK
Здравствуйте, BalusC, Этот код (ваш) работает для самой первой итерации. Нажмите на пункт Selectmenu, чтобы отобразить inputText и кнопку OK. Во второй раз нажмите кнопку ОК, чтобы не вызвать функцию # {counties.viewReport}. Еще раз нажмите кнопку OK, чтобы вызвать функцию # {counties.viewReport}. Это означает, что для активации требуется двойной щелчок на кнопке OK. Не могли бы вы объяснить это поведение? GDK – GDK
Когда кнопка нажата, это может означать, что либо 'stateName' пуст, либо' accept' является 'false' во время конкретного запроса. Действие, а именно, не будет вызываться, когда атрибут «rendered» кнопки или один из ее родителей оценивает «false» во время фазы запроса запроса. Тем не менее, это должно работать нормально, пока ваш bean-объект находится в зоне действия. Разве вы не программно не перезагружаете их? – BalusC