gpt4 book ai didi

java - JSF/RichFaces - 如何以编程方式从 HtmlAjaxSupport 调用 ActionEvent (a4j :support)

转载 作者:太空宇宙 更新时间:2023-11-04 07:05:22 24 4
gpt4 key购买 nike

我正在做这个

htmlAjaxSupport.setActionExpression(createMethodExpression(
"#{questionarioMB.visualizarQuestoesFilhos}", null,
new Class[0]));

方法

public void visualizarQuestoesFilhos()

被调用。

但是我想打电话

 public void visualizarQuestoesFilhos(ActionEvent event)

因为这样,我就可以获取正在点击哪个组件。

我需要在 htmlAjaxSupport设置什么才能工作?

最佳答案

在 JSF 1.2 或更高版本中创建 ActionListener 表达式:

FacesContext context = FacesContext.getCurrentInstance();
MethodExpression actionListener = context.getApplication().getExpressionFactory()
.createMethodExpression(context.getELContext(), "#{bean.actionListener}", null, new Class[] {ActionEvent.class});
uiCommandComponent.addActionListener(new MethodExpressionActionListener(actionListener));

为了避免大量样板代码,您可以将其很好地包装在帮助程序方法中(如果需要,在帮助程序/实用程序类中),例如:

public static MethodExpression createAction(String actionExpression, Class<?> returnType) {
FacesContext context = FacesContext.getCurrentInstance();
return context.getApplication().getExpressionFactory()
.createMethodExpression(context.getELContext(), actionExpression, returnType, new Class[0]);
}

public static MethodExpressionActionListener createActionListener(String actionListenerExpression) {
FacesContext context = FacesContext.getCurrentInstance();
return new MethodExpressionActionListener(context.getApplication().getExpressionFactory()
.createMethodExpression(context.getELContext(), actionListenerExpression, null, new Class[] {ActionEvent.class}));
}
<小时/>

从 Adrian 提供的另一个 stackoverthread 获取代码片段:

Deprecated richfaces javax.faces.el.MethodBinding replacement use

关于java - JSF/RichFaces - 如何以编程方式从 HtmlAjaxSupport 调用 ActionEvent (a4j :support),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21487214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com