2013-07-25 47 views
1
<p:spinner id="amount" 
      min="0" 
      max="#{bean.availableAmount}" 
      value="#{bean.amount}" /> 
<p:tooltip for="amount" 
      showEvent="focus" 
      hideEvent="blur" 
      disabled="#{bean.amount lt bean.maxAmount}" 
      value="Maximum amount has been reached" /> 

我正在尋找一種方式來實現類似上面例子殘疾人財產。換句話說,我想實現一個條件工具提示,只顯示符合條件的條件。有沒有人知道一種方法來實現這一目標?Primefaces條件提示

回答

1

爲什麼不使用rendered而不是disabled?在這種情況下,當p:spinner更改其值時,您需要更新p:tooltip元素。使用從Primefaces的ajax spinner展示:

<p:spinner id="amount" min="0" max="#{bean.availableAmount}" value="#{bean.amount}"> 
    <p:ajax update="tooltip" process="@this" /> 
</p:spinner> 

<p:tooltip id="tooltip" 
      for="amount" 
      showEvent="focus" 
      hideEvent="blur" 
      rendered="#{bean.amount lt bean.maxAmount}" 
      value="Maximum amount has been reached" /> 

更新(閱讀您的意見後):

如果你想隱藏的提示,你可以給從服務器端執行JavaScript代碼的命令當響應返回給瀏覽器:

RequestContext context = RequestContext.getCurrentInstance(); 
context.execute("hideTooltip();"); 

,然後在你的javscript代碼調用hideTooltip

function hideTooltip() { 
    $("tooltip").hide(); 
} 
+0

我試過這種方法。雖然'hide'還沒有出現,這意味着當渲染=「false」時,工具提示不會隱藏。 – Aquillo

+0

我已經搜索了Javscript方法來禁用'p:ajax'的onsuccess工具提示,但找不到這樣做的方法。 – Aquillo

+0

偉大的工作曼努埃爾,非常感謝你! – Aquillo

1

您還可以通過使用工具提示的小工具實現這個在客戶端:

<p:spinner id="amount" min="0" max="#{bean.availableAmount}" value="#{bean.amount}"> 
    <p:ajax oncomplete="myTooltip.hide()" process="@this" /> 
</p:spinner> 

<p:tooltip id="tooltip" 
     for="amount" 
     showEvent="focus" 
     hideEvent="blur" 
     widgetVar="myTooltip" 
     value="Maximum amount has been reached" /> 
+0

因爲'p:tooltip'沒有像'.hide()'這樣的客戶端API,所以它不適用於純javascript對象。你需要使用jQuery對象來創建'.hide()'(和'.show()'或'.toggle()')。請參見[Primefaces文檔,第435頁](http://primefaces.googlecode.com/files/indexed_primefaces_users_guide_3_5.pdf) – Manuel