JSF-将参数传递给 valuechangelistener

标签 jsf jsf-2 parameter-passing valuechangelistener

我有一个像这样的小单选按钮:

<h:selectOneRadio value="#{test.answer}" valueChangeListener="#{TestService.changeanswer}" immediate="true" id="answer">
 <f:selectItem  itemValue="A" itemLabel="Absolutely True"/>
 <f:selectItem  itemValue="B" itemLabel="True"/>
 <f:selectItem  itemValue="C" itemLabel="Partially True"/>
 <f:selectItem  itemValue="D" itemLabel="Not True"/>
 <f:selectItem  itemValue="E" itemLabel="Definitely Not True"/>
 <f:ajax event="change" process="answer"></f:ajax></h:selectOneRadio>

我的听众是这样的:
public void changeanswer(ValueChangeEvent vcEvent) { 
System.out.println("comeon= " + vcEvent.getOldValue()); 
System.out.println("comeon= " + vcEvent.getNewValue());}

我想将参数传递给 changeanswer 方法。例如,我想将 questionid 传递给 changeanswer 函数。我需要在里面做一些安排。

我怎样才能做到这一点?

很多很多提前感谢。

布拉德 - 新秀..

最佳答案

您可以使用 f:attribute 标记将任何数据发送到 ValueChangeListener:

<h:selectOneRadio value="#{test.answer}"
                  valueChangeListener="#{TestService.changeanswer}"
                  immediate="true" id="answer">
    <f:attribute name="myattribute" value="#{test.questionid}" />
    <f:selectItem  itemValue="A" itemLabel="Absolutely True"/>
    ...
</h:selectOneRadio>

如果我们假设 questionId 是一个 Integer,那么您可以通过以下方式接收数据:
public void changeanswer(ValueChangeEvent vcEvent) { 
  Integer questionId =
    (Integer) ((UIInput) vcEvent.getSource()).getAttributes().get("myattribute");

关于JSF-将参数传递给 valuechangelistener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3954652/

相关文章:

ios - 将数据从 iOS 标签字段发送到网站文本字段

javascript - 如何在函数调用中指定(默认)参数而不使用 undefined

jsf - 无法让 MenuItem 调用其 ActionListeners

ajax - :selectCheckboxMenu ajax event name for on close

java - JSF 2.0 - 使用调试器逐步完成生命周期中每个阶段的方法?

ajax - PrimeFaces 在按下回车键时禁用提交

python-3.x - python 函数文档中的 [x]* 是什么意思?

java - 数据库连接中断 EJB3

css - 如何更改背景颜色工具提示 primefaces 扩展名?

java - Primefaces 数据表分页不起作用