如何从rich:orderingList获取选定的值?

时间:2012-05-09 11:52:21

标签: jsf-2 richfaces

我正在使用Richfaces 4,并尝试在rich:orderingList中获取所选项目。我想要这些,以便我可以通过“删除”按钮将它们从列表中删除。所以我有这个:

<rich:orderingList id="categoriesList" listHeight="100px"
    listWidth="300px" value="#{selectionBean.availableCategories}"
    selection="${selectionBean.selectedCategories}"
    valueChangeListener="#{selectionBean.takeSelection}" >
    <a4j:ajax event="click" render="categoriesList" execute="@this" />
</rich:orderingList>

@ViewScoped支持bean中的函数,我从这里改编https://community.jboss.org/message/561295

private List<String> availableCategories;

private List<String> selectedCategories;

...............................

public void takeSelection(AjaxBehaviorEvent event) {
    System.out.println("ABE In takeSelection...");

    System.out.println(" Trying to find component with offering elements...");
    UIComponent component = event.getComponent();
    System.out.println(" Found: " + (component == null ? "<null>" : (component.getClass().getName() + " - " + component.getId())));
    if(component != null) {
        System.out.println( " Component that fired the event: " + component.getClass().getSimpleName() + " - " + component.getId());
        UIOrderingList orderingList = (UIOrderingList) component;

        System.out.println(" selectedCategories are "+ selectedCategories);
    }
    System.out.println(type + " Leaving takeSelection");
}

问题在于,当我单击列表以选择项目时,虽然我看到发送了Ajax请求,但是未更新selectedCategories列表,并且也没有调用takeSelection方法。

1 个答案:

答案 0 :(得分:0)

为了更好地理解您的问题,请提出几个问题。

目的是什么:

<a4j:ajax event="click" render="categoriesList" execute="@this" />

为什么在每次点击时渲染排序列表,因为它只是在点击“删除”按钮时才会被修改?

为什么:

selection="${selectionBean.selectedCategories}"

以“$”符号而不是“#”开头? (不应该阻止)。

最后,我在组件上找不到“选择”属性。见VDL。你确定语法吗?

此致