2013-04-03 60 views
1

我已經在我的view-state布爾變量:變化flowScope值與的commandButton

<set name="flowScope.render" value="false" type="java.lang.Boolean" /> 

現在我渲染這個變量

<p:commandButton value="Show Dates" 
          rendered="#{!render}" 
          update="table1,buttons" /> 

一個commandButton現在我想改變變量的值點擊這個commandButton。我試過setPropertyActionListener,但它不工作:

<p:commandButton value="Show Dates" rendered="#{!render}" update="table1,buttons"> 
    <f:setPropertyActionListener value="true" target="#{render}" /> 
</p:commandButton> 

我沒有找到太多有關如何更改值。那麼這怎麼可能?

+0

你爲什麼不設置渲染=「#{} someBean.renderValue」屬性,並用命令按鈕設置renderValue價值? – pantominas

+0

@pantominas我已經擁有一個Bean屬性。但問題是,當超過1個用戶登錄時,該值會改變它。所以我應該使用我改變的flowScope。 –

回答

1

現在我想通了。
我必須與transitions一起工作。在對變量的設置相同view-state,在那裏,我定義了兩個transitions

<transition on="rendertrue"> 
    <set name="flowScope.render" value="true" type="java.lang.Boolean" /> 
</transition> 
<transition on="renderfalse"> 
    <set name="flowScope.render" value="false" type="java.lang.Boolean" /> 
</transition> 

我不改變存在變量的值,我只是簡單地覆蓋它。如果這是最好的或清潔解決方案,我不知道,但它的工作原理。
現在我所說的具體transitionaction聲明中commandButton

<p:commandButton value="Show Date" 
          rendered="#{!render}" update="table1,buttons" 
          action="rendertrue" /> 
<p:commandButton value="Hide Date" 
          rendered="#{render}" update="table1,buttons" 
          action="renderfalse" />