【问题标题】:Can't choose value from rich select with enableManualInput if value is substring of another value如果值是另一个值的子字符串,则无法使用 enableManualInput 从富选择中选择值
【发布时间】: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 个不同的功能来完成这个不同的任务。

标签: jsf richfaces


【解决方案1】:

JIRA issue you linked 声明该问题已在另一个 JIRA issue 的上下文中修复,该问题已针对 RichFaces 4.5.0.CR1 标记为已修复。因此,您的问题的解决方案是使用 RichFaces 4.5.0.CR1 或更新版本

【讨论】:

    猜你喜欢
    • 2019-03-05
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 2015-07-04
    • 2023-04-07
    相关资源
    最近更新 更多