Как можно динамически показать или скрыть панель?
В приведенном ниже примере, когда я нажимаю btn-1
, отображается panel-2
, а panel-1
скрывается. Но когда я нажимаю btn-2
, ничего не происходит.
Управляемый компонент
@ManagedBean
@ViewScoped
public class SampleController implements Serializable {
private Boolean showPanel;
public void button1() {
showPanel = Boolean.FALSE;
}
public void button2() {
showPanel = Boolean.TRUE;
}
public Boolean showPanel1(){
return showPanel;
}
public Boolean showPanel2(){
return ! showPanel;
}
}
XHTML
<h:form id="form">
<h:panelGroup id="container-panel-1">
<h:panelGroup id="panel-1" rendered="#{sampleController.showPanel1()}">
<p:commandButton id="btn-1"
actionListener="#{sampleController.button1}"
update=":form:container-panel-1, :form:container-panel-2" />
</h:panelGroup>
</h:panelGroup>
<h:panelGroup id="container-panel-2">
<h:panelGroup id="panel-2" rendered="#{sampleController.showPanel2()}">
<p:commandButton id="btn-2"
actionListener="#{sampleController.button2}"
update=":form:container-panel-1, :form:container-panel-2" />
</h:panelGroup>
</h:panelGroup>
</h:form>
Я надеюсь, что вы можете помочь мне с этим.
Спасибо, Белл.
showPanel2()
. Как только вы исправите это, используяboolean
вместоBoolean
, у меня это сработает. Причина вашей проблемы не видна в предоставленной информации до сих пор. Мое лучшее предположение состоит в том, что вы импортировали@ViewScoped
из неправильного пакета, в результате чего область действия управляемого компонента JSF по умолчанию была равна@RequestScoped
, на что затем указывает пункт № 5 stackoverflow.com/questions/2118656/ будет применять. - person BalusC   schedule 09.04.2015Boolean
наboolean
и проверяю, что пакет, который я использовал, былimport javax.faces.bean.ViewScoped;
. По-прежнему ничего не происходит, когда я нажимаю кнопку 2. Где вы увидели исключение? Я не вижу никаких исключений в своей консоли. Спасибо - person bell   schedule 11.04.2015