У меня есть собственный файл тегов с формой:
<h:form>
<h:commandButton value="click">
<f:ajax event="click" listener="#{bean[method]}" />
</h:commandButton>
</h:form>
Я условно визуализирую его с помощью ajax, как показано ниже:
<h:panelGroup id="test">
<h:form>
<h:commandButton value="click">
<f:ajax event="click" listener="#{backingTest.updateFlag}" render=":test"/>
</h:commandButton>
</h:form>
<h:panelGroup rendered="#{backingTest.flag}">
<my:customtag bean="#{backingTest}" method="printMessage"/>
</h:panelGroup>
</h:panelGroup>
Это связанный вспомогательный компонент:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class BackingTest {
private boolean flag = false;
public void printMessage() {
System.out.println("hello");
}
public void updateFlag() {
flag = true;
}
public boolean getFlag() {
return flag;
}
}
Когда я нажимаю первую командную кнопку, метод updateFlag()
вызывается правильно, и вторая командная кнопка отображается правильно. Но когда я затем нажимаю вторую командную кнопку, она никогда не попадает в метод printMessage()
. В консоли JS веб-браузера и мониторе HTTP-трафика я вижу, что событие click
успешно запущено и запрос XHR POST успешно отправлен.
Если я уберу атрибут rendered
, то все будет работать как положено.
Чем это вызвано и как я могу это решить? Я использую Мохарру 2.1.25.