2012-08-09 34 views
1

我希望我的頁面儘可能地對用戶友好,並且我有一個想法,但是我想解決它的方式有點困難。如何在JSF中將OneMenu元素更改爲outputText

我正在使用primefaces,我希望有一個selectOneMenu元素,它將selectOneMenu中所選變量的值更改爲outputText的值。任何人都有一些漂亮的想法?

+0

如果您的意圖是禁止用戶第二次選擇價值,那麼可以禁用價值變更 – rags 2012-08-09 09:55:47

回答

1

這可以通過ajax和部分渲染完成。這裏是我的想法的草圖(未經測試,在普通的JSF):

<h:panelGroup id="wrapper"> 
    <h:selectOneMenu value="#{myBean.myValue}" 
        rendered="#{myBean.myValue == someInitialValue}" ...> 
    <f:ajax render="wrapper"/> 
     ... (your select items here) 
    </h:selectOneMenu> 
    <h:outputText value="#{myBean.myValue}" 
       rendered="#{myBean.myValue != someInitialValue}" .../> 
</h:panelGroup> 

而這正是它的作用:

h:selectOneMenu值將被初始化,如果是菜單將僅呈現初始值。

在更改值時,周圍面板組將被重新渲染,隱藏菜單並讓h:outputText顯示。

您需要一個包裝面板組,因爲outputText在頁面加載時不存在。如果您的表格很小,您也可以使用[email protected]或其他任何周圍的容器。那你就不需要包裝了。

+0

感謝您的回覆!我以同樣的方式思考,但我認爲可能有一些primefaces屬性可以幫助最小化代碼。 – 2012-08-09 10:22:05

+0

是的,這將是一個很好的補充,就像[入門](http://www.primefaces.org/showcase-labs/ui/inplace.jsf)selectOneMenu ....編輯:哦,只是注意到,有給定鏈接上的選擇菜單。也許你應該仔細看看這個例子。 – 2012-08-09 11:33:18