点击p:selectOneButton时的调用方法

时间:2016-03-10 04:06:48

标签: jsf primefaces

我正在尝试通过doSomething()触发方法p:selectOneButton。虽然每次尝试都会失败。

由于p:selectOneButton没有actionListener,我考虑使用p:ajax并将其指向方法doSomething(),但在编译时没有错误,它仍然没有点击它时触发所需的方法。

这是我的代码示例:

<h:form id="languageSelectionForm">
    <p:selectOneButton value="#{language.selectedLanguage}">
        <p:ajax event="change" listener="#{language.doSomething}" />
        <f:selectItems value="#{language.languagesMap}" />
    </p:selectOneButton>
</h:form>

点击doSomething()时如何触发p:selectOneButton

1 个答案:

答案 0 :(得分:0)

我发现了错误!

填充p:selectOneButton我使用<f:selectItems value="#{language.languagesMap}" />。在控制器端,我有一个看起来像这样的方法:

public Map<String, LanguageSpec> getLanguagesMap() { ... }

并公开连接到选择参数的getter和public setter:

private LanguageSpec selectedLanguage;

当我将第二个Map-argument从LanguageSpec更改为StringselectedLanguage参数相同时,事件已执行并触发doSomething()

因此,在未经检查的情况下,我认为p:selectOneButton只能在<f:selectItems value="#{language.languagesMap}" />填充了keyval填充{String的地图时处理事件{1}}对象。

特别感谢上述所有帮助者。通过确认我的示例代码在copy&amp; amp;粘贴,我能够专门针对这个问题测试我的代码。