2012-08-09 32 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