如果div的財產rendered
是false
那麼完整的標籤不會被包含在HTML發送到瀏覽器,包括標籤內的所有元素。這就是爲什麼你的按鈕不在那裏,不能觸發任何事件。
將style="display:none"
添加到呈現div標記時必須隱藏div標記。
例子:
<xp:panel
id="panel1">
<xp:this.attrs>
<xp:attr
name="style"
value="display:none"
rendered="#{javascript: ! facesContext.getMessages().hasNext()}">
</xp:attr>
</xp:this.attrs>
<xp:button
value="Test"
id="button1">
</xp:button>
</xp:panel>
呈現一種無形的div標籤,包括按鈕,如果! facesContext.getMessages().hasNext()
是真的
<div id="view:_id1:panel1" style="display:none">
<button class="xspButtonCommand" type="button" name="view:_id1:button1"
id="view:_id1:button1">Test
</button>
</div>
否則就可見
<div id="view:_id1:panel1">
<button class="xspButtonCommand" type="button" name="view:_id1:button1"
id="view:_id1:button1">Test
</button>
</div>
在這兩種情況下,按鈕的事件可以通過執行。
謝謝Knut,太棒了。正是我想要它做的。我不知道你可以計算渲染的屬性。 – user4372614