У меня есть этот кусок кода, который не делает точно, что я думал. Я пытаюсь установить свойство Ajax, а затем повторно отнести один компонент. Моя .xhtml выглядит следующим образомрендеринг <h: panelGroup> by ajax в jsf
<h:form>
<h:commandButton value="Render!" >
<f:ajax render=":result" listener="#{eFindUser.findUser}" />
</h:commandButton>
</h:form>
<h:panelGroup id="result" layout="block" rendered="#{eFindUser.responseRendered}" >
This is some text that is supposed to be rendered later
</h:panelGroup>
подкладочный боб выглядит следующим образом
@Named(value = "eFindUser")
@ViewScoped
public class EFindUserManagedBean implements Serializable{
private boolean responseRendered = false;
/**
* Creates a new instance of EFindUserManagedBean
*/
public EFindUserManagedBean() {
}
public void findUser(AjaxBehaviorEvent abe) {
responseRendered = !responseRendered;
System.out.println("finding..... ("+ responseRendered+")" + this);
}
public boolean isResponseRendered() {
return responseRendered;
}
public void setResponseRendered(boolean responseRendered) {
this.responseRendered = responseRendered;
}
}
Когда я снова нажмите на кнопку, свойство не изменяется. Существует сообщение в serverlog, который говорит
INFO: finding..... (true)[email protected]
INFO: finding..... (true)[email protected]
Очевидно, что существует некоторая проблема с управляемым бобом, как она создается каждый раз, когда есть запрос, даже если он должен быть видом области действия.
Что следует изменить, чтобы группа панелей (id: «result») могла изменить ее видимость? Никаких дополнительных интерфейсов или других технологий.
Большое спасибо за ваши ответы
не работает для меня, хотя. Может быть, потому, что я использую CDI. Да! Вот и все. У CDI нет области просмотра. В сочетании с ответом Александра Лавуа я получил его работу, спасибо. –