【发布时间】:2016-03-10 04:06:47
【问题描述】:
我正在尝试通过p:selectOneButton 触发方法doSomething()。尽管每次尝试都失败了。
由于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>
点击p:selectOneButton时如何触发doSomething()?
【问题讨论】:
-
检查您的方法签名和 EL 组合。听起来他们不匹配,请查看重复项
-
当 copy'n'paste'n'stubbed'n'runned 在暂存器项目中运行时,它适用于我和世界上的任何其他人,所有内容都设置为裸默认值并使用最新版本的 JSF/ PrimeFaces/Tomcat。您的问题的原因在目前提供的信息中不可见。请继续努力 stackoverflow.com/tags/jsf/info
-
@BalusC 我做了这个例子。我也面临与
valueChangeListner相同的问题。然后我添加了<f:ajax event="change"/>然后它的工作。这可能吗?因为我知道<f:ajax>不适用于primefaces 扩展。 -
您在
p:ajax中使用了#{language.doSomething}",并且您提到doSomething()作为方法签名,这两者不匹配。正如我发布的“重复”中的第 11 点所述,我们(至少我是 BalusC 所做的)使用了 `doSomething(ActionEvent)。所以这仍然很奇怪(或者你的方法签名不是 doSomething() 并且我们(至少我)追逐了鬼魂。下次确实按照 BalusC 发布的链接
标签: jsf primefaces