我有一个<h:selectOneMenu>
它从我的对象模型中呈现 cardStatus 的值。
CardStatus 有一个布尔属性“temporary Disabled”,这意味着该值仍然有效,但用户不应使用。
现在,如果我的模型将 cardStatus 设置为临时禁用值,如何在下拉组合框中显示该值并仍然阻止用户将该值更改为另一个临时禁用状态?
如果我只是从我提供给的 SelectItems 列表中删除禁用的卡状态<h:selectOneMenu>
然后,当渲染选择时,它将自动选择列表中的第一项,并在下次提交它,从而错误地更改模型中的值。
如果我将禁用的卡状态包含在 SelectItems 列表中,但将其相应项目的禁用属性值设置为 true,则它们将以 HTML 禁用方式呈现,并且不会提交,因此我在模型中得到一个空值,这也是错误的。
我被困住了。如有任何建议,我们将不胜感激。
此致,
担。
最后我所做的是使用一段 jQuery 代码,该代码在页面加载后执行。
<h:selectOneMenu
id="cardStatus"
value="#{someBean.cardStatus}"
converter="selectItemConverter">
<f:selectItem itemValue="E|A" itemLabel="Active" />
<f:selectItem itemValue="E|S" itemLabel="Stolen" />
<f:selectItem itemValue="D|B" itemLabel="Blocked" />
<f:selectItem itemValue="E|L" itemLabel="Lost" />
<f:selectItem itemValue="D|C" itemLabel="Counterfeit" />
</h:selectOneMenu>
javascript 代码的作用是扫描所有项目以及每个项目的值以前缀开头D|使用 jQuery 的 hide() 函数隐藏项目。这样,组合框的行为就像所有值都有效/启用一样,但用户将无法选择非活动值,因为它们不可见。此外,如果默认选择的值是以以下值开头的值之一D|,该值仍将显示为默认值,但用户无法在他/她可以选择的选项列表中看到它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)