【发布时间】:2014-01-16 13:04:47
【问题描述】:
我有丰富的:选择组件,enableManualInput 设置为“true”。
<rich:select value="#{productBean.item.cargoType}"
enableManualInput="true"
converter="#{cargoTypeSelectConverter}">
<f:selectItems value="#{productBean.cargoTypes}"
var="cargo"
itemLabel="#{cargo.name}"/>
</rich:select>
cargoTypes 列表包含下一个值:“gazoline”、“gazoline class A”、“gazoline class B”。如果我尝试选择行“gazoline”,则会选择行“gazoline class A”。选择没有问题的任何其他行。因此,只有当我尝试选择作为另一个子字符串的行时,它才会出现。如果我们将“gazoline”更改为“gazoline class C”,一切都会好起来的。 有什么建议可以解决吗? 我用的是:richfaces 4.2.3.Final
UPD:这里是richfaces 论坛上的帖子,我也问过这个问题: https://community.jboss.org/thread/236266
简而言之:我认为这个问题的出现是因为 select.js(richfaces 组件存储库)中的 __save 方法。特别是在 __getClientItemFromCache 调用中。要修复它,我们需要清除缓存或使用 __getClientItem 方法而不是 __getClientItemFromCache。
UPD2: 在错误跟踪器中完全发现了这个问题: https://issues.jboss.org/browse/RF-12613
【问题讨论】:
-
您是否尝试将
selectFirst属性设置为false?此外,如果这不起作用,请使用clientFilterFunction并为此选择组件实现自定义客户端过滤器。 -
selectFirst 不起作用。自定义过滤功能可以工作,感谢您的想法。但它也只是一种解决方法,我不知道这个功能必须如何工作。如果它只搜索特别匹配的问题,我会修复问题,但在 rich:select 中搜索会很糟糕。如果它会以任何其他方式搜索,我们将再次使用第一个元素。
-
我个人不认为它是一个错误,因为 enableManualInput 被设计为数据库中的
like 'string%'函数,因此有这个clientFilterFunction这是您自己重新实现此过滤器的方式。我不认为这是一种解决方法。 -
我并不是说它过滤错误。我只是说我不能从过滤列表中选择行。如果我看到行并且无法选择它 - 这是一个错误。 clientFilterFunction 以两种不同的方式使用。一个用于过滤器列表,第二个用于应用选择的值。我需要 2 个不同的功能来完成这个不同的任务。