【问题标题】:How to change OneMenu element to outputText in JSF如何在 JSF 中将 OneMenu 元素更改为 outputText
【发布时间】:2012-08-09 09:15:00
【问题描述】:

我希望我的页面尽可能用户友好,我有一个想法,但我想解决它的方式有点困难。

我正在使用 primefaces,我希望有一个 selectOneMenu 元素,该元素仅更改为一个 outputText,其中包含 selectOneMenu 中所选变量的值。有人有什么好主意吗?

【问题讨论】:

  • 值更改时,如果您的意图是禁止用户第二次选择值,则可以禁用它

标签: jsf primefaces selectonemenu


【解决方案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 出现。

为此,您需要一个包装 panelGroup,因为在页面加载时 outputText 不存在。如果您的表单很小,您也可以 render=@form 或任何其他周围的容器代替。那么你就不需要包装器了。

【讨论】:

  • 感谢您的回复!我也是这么想的,但我想也许有一些 primefaces 属性可以帮助最小化代码。
  • 是的,这将是一个很好的补充,类似于Inplace for selectOneMenu.... 编辑:哦,刚刚注意到给定链接上有一个选择菜单。也许你应该仔细看看这个例子。
猜你喜欢
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
  • 1970-01-01
  • 2012-02-06
  • 2012-04-01
  • 2012-03-07
  • 1970-01-01
  • 2014-03-26
相关资源
最近更新 更多