Я пытаюсь переключить h: inputText с другим при нажатии кнопки h: commandButton.Чтобы сделать это, я пытаюсь связать команду f: ajax с h: commandButton, при этом слушатель устанавливает значение для bean-компонента (решая, какой из них отображать), и повторно отображает область.
Я пытался использовать слушатель на f: ajax, actionListener на h: commandButton, действие на h: commandButton с выполнением на f: ajax.Ничего не получалось.Мотед, который я пытаюсь назвать, вообще не вызывается - нет печати (см. Далее).
PanelGroup перерисовывается, поэтому мне нужен атрибут onevent, который повторно присоединяет некоторый текст подсказки JavaScript на основе заголовка (у меня был более ранний вопрос, связанный с этим).
Метод, который я пытаюсь вызвать:
public void morePressed(AjaxBehaviorEvent e) {
easySearch = !easySearch;
System.out.println("Made it!");
}
Сегмент JSF, который не работает (обратите внимание на последний h: commandButton пытается повторно отрендерить panelGroup):
<h:form>
<h:panelGroup id="switchSearchTexts">
<h:inputText accesskey="s" alt="Search" id="searchBoxPeople" title="Search Plebeians" valueChangeListener="#{peopleBean.simplePersonQuery}" size="25" rendered="#{peopleBean.easySearch}">
<f:ajax render="peopleDataTable" event="keyup" />
</h:inputText>
<h:inputText accesskey="s" alt="Search First Name" id="searchBoxFN" title="Search First Name" size="25" rendered="#{!peopleBean.easySearch}">
<f:ajax render="peopleDataTable" event="keyup" />
</h:inputText>
</h:panelGroup>
<div id="expandBox">
<h:inputText id="searchBoxLN" alt="Search Last Name" styleClass="hideToggle" title="Search Last Name" size="25" />
<h:inputText id="searchBoxAddress" alt="Search Address" styleClass="hideToggle" title="Search Address" size="25" />
</div>
<h:commandButton type="button" styleClass="moreButtonAsText" id="moreButtonAsText" value="▸More">
<f:ajax listener="#{peopleBean.morePressed}" render="switchSearchTexts" event="click" onevent="callFunctionAjaxRequest" />
</h:commandButton>
Это JavaScript (jQuery), который я прикрепляю к кнопке «Дополнительно» при загрузке страницы.Я даю это не потому, что думаю, что это может помочь, но я не знаю, может ли это каким-либо образом помешать слушателю ajax:
$(function() {
textboxHint();
$('input[id$="moreButtonAsText"]').toggle(function(e) {
$(this).prop('value', '\u25c2Less');
$(".hideToggle").show(300);
}
, function () {
$(this).prop('value', '\u25b8More');
$(".hideToggle").hide(100);
$('input[id$="searchBoxAddress"]').prop('value', function() {
return $(this).prop('title');
});
$('input[id$="searchBoxAddress"]').blur();
});
});
Понятия не имею.Как я уже сказал, я пробовал actionListener на h: commandButton с различными аппроксимациями там, а также с различными подходами к слушателю на ajax.Кто-нибудь может понять, почему слушатель не работает?
Обновление:
То, что я закончил, прежде чем получить ответ, конвертирует все для отображения и скрытия на основеJavaScript, с вещами, которые мне нужно было скрыть, если у них изначально не было скрытого javascript и т. Д.
Однако мне нужен f: ajax где-то еще, сейчас.
Решение - вывести событие«нажмите» на кнопку h: commandButton.Я все еще теперь знаю, почему это привело к его поломке, но эй, что бы ни работало.