我正在實現一些搜索過濾器。 A <p:commandLink>
顯示在每個搜索組件旁邊(<p:inputText>
,<p:selectOneMenu>
等)。有條件呈現p:commandLinks
<p:inputText id="text" value="#{bean.text}" required="true"/>
<h:panelGroup id="panelGroup">
<p:commandLink process="@this text" update="panelGroup text" actionListener="#{bean.action}" rendered="#{empty param['form:text']}">
<h:outputText styleClass="ui-icon ui-icon-search"/>
</p:commandLink>
<p:commandLink process="@this" update="panelGroup text" actionListener="#{bean.resetAction}" rendered="#{not empty param['form:text']}">
<h:outputText styleClass="ui-icon ui-icon-trash"/>
<p:resetInput target="text"/>
</p:commandLink>
</h:panelGroup>
當第一個<p:commandLink>
(一個與搜索圖標)點擊和給定<p:inputText>
不爲空,鏈接有望消失,另一個鏈接(帶有垃圾桶圖標)預計呈現(反之亦然)。
發生這種情況,但第一個鏈接(actionListener="#{bean.action}"
)所指示的動作偵聽器未被調用,因爲鏈接是基於<p:inputText>
的值呈現的。 rendered="#{empty param['form:text']}"
負責防止偵聽器被調用。
此外,當出現與垃圾桶圖標的鏈接時,它會重置輸入組件,如果它被點擊但不會消失。它只會在再次單擊時消失(然後搜索出現)。
如何正確處理這種情況?如果沒有違反驗證/轉換並且點擊搜索鏈接,則鏈接應該消失並且應該呈現垃圾鏈接。
相反,當垃圾鏈接出現時,如果它被點擊,它應該重置<p:inputText>
然後消失,以便可以呈現搜索鏈接。