我正在尝试通过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
?
答案 0 :(得分:0)
我发现了错误!
填充p:selectOneButton
我使用<f:selectItems value="#{language.languagesMap}" />
。在控制器端,我有一个看起来像这样的方法:
public Map<String, LanguageSpec> getLanguagesMap() { ... }
并公开连接到选择参数的getter和public setter:
private LanguageSpec selectedLanguage;
当我将第二个Map-argument从LanguageSpec
更改为String
且selectedLanguage
参数相同时,事件已执行并触发doSomething()
。
因此,在未经检查的情况下,我认为p:selectOneButton
只能在<f:selectItems value="#{language.languagesMap}" />
填充了key
和val
填充{String
的地图时处理事件{1}}对象。
特别感谢上述所有帮助者。通过确认我的示例代码在copy&amp; amp;粘贴,我能够专门针对这个问题测试我的代码。