2012-02-13 88 views
2

Primefaces p:selectOneMenu組件似乎不會將焦點帶入先前選擇的項目。舉例來說,如果我有建立國家的菜單如下Primefaces selectOneMenu在重新打開時不會保留所選項目的焦點

<p:selectOneMenu id="countryMenu" value="#{myBean.selectedCountry}"> 
     <f:selectItem value="#{null}" itemLabel="Please select a Country..."/> 
     <f:selectItems value="#{myBean.countries}" var="country" 
         itemValue="#{country.code}" 
         itemLabel="#{country.name}"/> 
     <p:ajax update="anotherComponent"/> 
    </p:selectOneMenu> 

,我從列表中選擇一個國家,然後單擊菜單上再次顯示它從一開始的國家名單。它確實保留選定的國家 - 它只是不向下滾動並關注它。

標準JSF h:selectOneMenu顯示預期行爲 - 打開時顯示以前選擇的國家/地區。

是否有一些技巧或這是一個錯誤?

它也有一個number of other quirks與它如何響應鍵盤輸入(例如,當菜單焦點沒有打開菜單時按下向上/向下),這有點令人沮喪。

我使用:

  • Primefaces 3.1
  • Glassfish的3.1.1
  • 的NetBeans 7.1
+0

好吧,這顯然是PrimeFaces中的一個錯誤(至少缺乏特性),您可能也已經意識到這一點。除了建議您在那裏報告錯誤,或者重寫/重寫渲染器和/或JavaScript,我們無法在此爲您提供多少幫助。 – BalusC 2012-02-13 12:06:44

+0

僅供參考,您可以在這裏搜索和/或報告Primefaces的問題:http://code.google.com/p/primefaces/issues/list – 2012-02-13 12:11:29

+0

@maple_shaft是的,我在發佈這個問題之前看了一下,但目前沒有問題與此有關。我只是想在發佈問題之前確定它確實是一個錯誤。 – 2012-02-13 22:26:06

回答

0

好的,這似乎已被修復!

我跑了一些測試各種版本Primefaces的結果如下:

  • 3.1 - 沒有工作

  • 3.2 - 沒有工作

  • 3.3 - 沒不起作用(之前選定的值會短暫閃爍,然後顯示第一個菜單項)

  • 3。4 - 按預期工作

注意:從3.3升級到3.4(直到我做這個項目是不可選的話),當我確實需要清除瀏覽器緩存(在Chrome和Firefox) 。

0

這不是一個錯誤。您只需要覆蓋Country類中的equalsTo(Object o)compareTo(Object o)方法。

這樣做後就可以工作了。

+0

這並不能解釋爲什麼它的工作原理'H:selectOneMenu'。 'compareTo()'是不必要的,它不會被使用。 'equalsTo()'不存在,我假定你的意思是'equals()'。但是如果缺少或者執行不力,'h:selectOneMenu'也會失敗。 – BalusC 2012-03-30 13:46:09

+1

在Primefaces展示中可以看到完全相同的問題(http://www.primefaces.org/showcase/ui/selectOneMenu.jsf上的'pojo'示例)。其中一天我會報告它。 Oh and BalusC - 謝謝你不知疲倦的SO回答,幾乎所有我覺得有用的JSF文章都有你的名字! – 2012-03-31 09:19:44

0

如果您更新到Primefaces 3.4(目前的版本),您仍然有類似的行爲,這不是預期的。

事件,如果第一項具有noSelectionOption="true"你這似乎是在審覈中的錯誤相同的行爲,並且有報道herehere。還有一個關於它的論壇thread

但是你可以嘗試使用itemDisabled財產,因爲它解決了這個問題對我來說:

<p:selectOneMenu id="hero" value="#{bean.hero}"> 
    <f:selectItem itemLabel="Select..." itemDisabled="true" /> 
    <f:selectItems var="item" value="#{bean.heroes}" itemLabel="#{item.name}" /> 
</p:selectOneMenu> 

我希望它能幫助。

+0

這些問題似乎沒有關係,'itemDisabled'沒有什麼區別。我提出了一個問題,希望它能很快得到解決:) – 2012-09-27 02:21:38

相關問題