Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 单击p:SelectOne按钮时调用方法_Jsf_Primefaces - Fatal编程技术网

Jsf 单击p:SelectOne按钮时调用方法

Jsf 单击p:SelectOne按钮时调用方法,jsf,primefaces,Jsf,Primefaces,我试图通过p:selectOneButton触发一个方法doSomething()。尽管每次尝试都失败了 由于p:selectOneButton没有actionListener,我考虑使用p:ajax并将其指向方法doSomething(),但尽管它编译时没有错误,但当我单击它时,它仍然不会触发所需的方法 以下是我的代码示例: <h:form id="languageSelectionForm"> <p:selectOneButton value="#{language

我试图通过
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()

我发现了错误

要填充
p:selectOneButton
我使用了
。在控制器端,我有一个类似以下的方法:

publicmap getLanguagesMap(){…}

和public连接到用于选择的参数的getter和public setter:

private language spec selected language

当我将第二个Map参数从
LanguageSpec
更改为
String
,并将
selectedLanguage
参数更改为
selectedLanguage
时,事件执行并触发
doSomething()

因此,在没有进行检查的情况下,我假设
p:selectOneButton
只能在
中填充了
val
中都填充了
字符串
对象的映射时处理事件

特别感谢以上所有的帮助。通过确认我的示例代码在复制和粘贴时工作,我能够专门针对这个问题测试我的代码。

我发现了错误

要填充
p:selectOneButton
我使用了
。在控制器端,我有一个类似以下的方法:

publicmap getLanguagesMap(){…}

和public连接到用于选择的参数的getter和public setter:

private language spec selected language

当我将第二个Map参数从
LanguageSpec
更改为
String
,并将
selectedLanguage
参数更改为
selectedLanguage
时,事件执行并触发
doSomething()

因此,在没有进行检查的情况下,我假设
p:selectOneButton
只能在
中填充了
val
中都填充了
字符串
对象的映射时处理事件


特别感谢以上所有的帮助。通过确认我的示例代码在复制和粘贴时起作用,我能够专门针对此问题测试我的代码。

请检查此检查您的方法签名和EL组合。这听起来好像不匹配,请看副本。当在scratchpad项目中运行copy'n'paste'n'stubbed'n时,它对我和世界上其他任何人都有效,所有内容都设置为纯默认值,并使用最新版本的JSF/PrimeFaces/Tomcat。到目前为止,您的问题原因在提供的信息中不可见。请注意@BalusC,我做了这个例子。而且我在
valueChangeListner
方面也面临同样的问题。然后我添加了
,然后它就开始工作了。这可能吗?因为我知道
不能使用primefaces扩展。您在
p:ajax
中使用了
{language.doSomething}
,并且您提到了
doSomething()
作为方法签名,这两种方法不匹配。我们(至少是BalusC所做的)使用了`doSomething(ActionEvent)正如我在“duplicate”中第11点提到的,这仍然很奇怪(或者你的方法签名不是doSomething(),而我们(至少是我)追踪鬼魂。下次确实要关注BalusC Posted链接,请检查此检查您的方法签名和EL组合。听起来它们不匹配,请查看副本。在scratchpad项目中运行“复制”“粘贴”“存根”“使用最新版本”时,它对我和世界上任何其他人都有效JSF/PrimeFaces/Tomcat的ns。到目前为止,您的问题的原因在提供的信息中是不可见的。请解决这个问题@BalusC我做了这个例子。我也面临着与
valueChangeListner
相同的问题。然后我添加了
,然后它就开始工作了。这可能吗?因为我知道
不会与pri一起工作mefaces扩展。您在
p:ajax
中使用了
{language.doSomething}
,并且您提到了
doSomething()
作为方法签名,这两个签名不匹配。我们(至少我是BalusC所做的)使用了我发布的“副本”第11点中提到的“doSomething(ActionEvent)”。所以这仍然很奇怪(或者你的方法签名不是doSomething(),我们(至少我)追逐幽灵。下次确实要遵循链接BalusC postedWe不应该“测试工作代码”…:-(如上所述,在发布本文时,我假设我的代码是错误的。我不知道它是完全正确的。不过,非常感谢您的帮助。如果您的java方法是doSomething())这是错误的…如果它是有效的,那么为什么要发布它???很抱歉,但是如果你一直发布这样的问题,你会得到越来越少的帮助…下次发布带有
doSomething()的签名
工作得非常好。我不需要将
ActionEvent
作为参数。将JSF项目状态设置为
Development
。您应该看到带有转换错误的faces消息。另请参见我们不应该“测试工作代码”…:-(如上所述,在发布本文时,我假设我的代码是错误的。我不知道它是完全正确的。不过,非常感谢您的帮助。如果您的java方法是doSomething())这是错误的…如果它正在工作,那么为什么要发布它???很抱歉,但是如果你一直发布这样的问题,你会得到越来越少的帮助…下次发布签名时,使用
doSomething()
工作得非常好。我不需要
ActionEvent
作为参数。设置JSF项目