我希望我的页面尽可能地对用户友好,并且我有一个想法,但是我想解决它的方式有点困难。如何在JSF中将OneMenu元素更改为outputText
我正在使用primefaces,我希望有一个selectOneMenu元素,它将selectOneMenu中所选变量的值更改为outputText的值。任何人都有一些漂亮的想法?
我希望我的页面尽可能地对用户友好,并且我有一个想法,但是我想解决它的方式有点困难。如何在JSF中将OneMenu元素更改为outputText
我正在使用primefaces,我希望有一个selectOneMenu元素,它将selectOneMenu中所选变量的值更改为outputText的值。任何人都有一些漂亮的想法?
这可以通过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]
或其他任何周围的容器。那你就不需要包装了。
感谢您的回复!我以同样的方式思考,但我认为可能有一些primefaces属性可以帮助最小化代码。 – 2012-08-09 10:22:05
是的,这将是一个很好的补充,就像[入门](http://www.primefaces.org/showcase-labs/ui/inplace.jsf)selectOneMenu ....编辑:哦,只是注意到,有给定链接上的选择菜单。也许你应该仔细看看这个例子。 – 2012-08-09 11:33:18
如果您的意图是禁止用户第二次选择价值,那么可以禁用价值变更 – rags 2012-08-09 09:55:47