首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MethodExpression IllegalArgumentException:参数数量错误

MethodExpression IllegalArgumentException:参数数量错误
EN

Stack Overflow用户
提问于 2013-02-06 03:20:41
回答 1查看 1.3K关注 0票数 1

我有一个动态呈现的JSF页面-所有组件都是由支持bean创建的,并添加到网格中。我有一个命令按钮,我已经创建了一个MethodExpression来设置单击该按钮时调用的方法。但单击该按钮会导致异常"java.lang.IllegalArgumentException:错误的参数数量“和"javax.faces.FacesException:错误的参数数量”。

创建按钮的代码是

代码语言:javascript
复制
HtmlCommandButton addBtn1 = (HtmlCommandButton) FacesContext.getCurrentInstance().
getApplication().createComponent(HtmlCommandButton.COMPONENT_TYPE);
addBtn1.setId("addBtn1");
addBtn1.setValue("Add Row");
String addBtn1Action = "#{dynamicComponentTest.addBtn1_action}";
Class[] args = new Class[]{ActionEvent.class};
MethodExpression addBtn1ME = FacesContext.getCurrentInstance().getApplication().
getExpressionFactory().createMethodExpression(
FacesContext.getCurrentInstance().getELContext(), addBtn1Action, null, args);
addBtn1.setActionExpression(addBtn1ME);
mainGrid.getChildren().add(addBtn1);

则动作方法的签名为

代码语言:javascript
复制
public String addBtn1_action(ActionEvent event)

当我运行我的测试应用程序并点击按钮时,我得到了异常。但是,如果我将签名更改为

代码语言:javascript
复制
public String addBtn1_action(ActionEvent[] event)

我得到一个找不到"...DynamicComponentTest@1db3b45.addBtn1_action(javax.faces.event.ActionEvent)“的MethodNotFoundException

有没有人成功地解决了这个问题?我尝试过在createMethodExpression中使用null和String.class作为返回值的类型,但这并不能帮助解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-06 04:39:04

操作方法不应具有参数。ActionEvent参数是针对actionListeners的。因此,删除该参数,并根据该参数更改createMethodExpression调用。另外,动作方法的返回类型是StringcreateMethodExpression的第三个参数是返回类型。你应该用String.class代替null。最后:

代码语言:javascript
复制
FacesContext.getCurrentInstance().getApplication().getExpressionFactory().
        createMethodExpression(
        FacesContext.getCurrentInstance().getELContext(),
          addBtn1Action, String.class, new Class[0]);

和action方法签名:

代码语言:javascript
复制
public String addBtn1_action() {
    // ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14715225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档