0

我正在使用丰富的面孔选择组件。当用户在选择组件中手动键入某些内容时,我想要动态值。

<rich:select enableManualInput="true" defaultLabel="start typing for select" value="#{supplierSearchBean.userInput}">
                        <a4j:ajax event="keyup" execute="@this" listener="#{supplierSearchBean.userInputChange}"/>
                        <f:selectItems value="#{supplierSearchBean.selectOptions}" />
                        </rich:select> 

Java代码如下

public void userInputChange(ActionEvent  ae){
       Map map = ae.getComponent().getAttributes();
       System.out.println(map.toString());

   }


 public void setUserInput(String userInput) {
       System.out.println("userINput = " + userInput);
       this.userInput = userInput;
   }

在这里我发现了 2 个问题 第一个:setUserINput 总是在用户类型值时打印空字符串 第二个:监听器方法永远不会被调用。

有什么帮助吗?

4

2 回答 2

0

问题很可能是用户键入时没有选择值,并且此组件将允许的值限制为指定的选择项。因此,部分输入无效并且不能绑定到您的 bean。

rich:autocomplete我认为如果您使用 a代替,您可以获得预期的行为。但是,如果您想限制允许的值,也许您可​​以保留rich:select并监听selectitem事件。

于 2012-05-10T08:06:15.043 回答
0

覆盖文件夹下文件中的getItems功能。richfaces-utils.jsrichfaces-core-impl-4.0.0.Final.jarrichfaces-core-impl-4.0.0.Final\META-INF\resources

将推送项目的条件更改为

if(p != -1) 

代替

if(p == 0)

这应该可以解决问题。

于 2017-04-17T07:42:47.923 回答