0

这是我以编程方式创建一个<h:commandButton>

private HtmlCommandButton generateButton(String id,String label){
  HtmlCommandButton button = (HtmlCommandButton)app.createComponent
      (HtmlCommandButton.COMPONENT_TYPE);
  button.setId(id);
  button.setValue(label);
  button.setOnclick("processInput(id)");
  return button;
}

单击按钮时,我需要执行该processInput(id)功能。但是,当我单击该按钮时,什么也没有发生。

4

1 回答 1

1

Onclick 函数会将 processInput 添加为 JavaScript 函数。您需要在 Java 方法中传递 id,例如,

setOnClick("processInput(" + id + ")");

要添加您需要使用的操作方法setActionExpression

HtmlCommandButton button = new HtmlCommandButton();
FacesContext fc = FacesContext.getCurrentInstance();
ELContext ctx = fc.getELContext();
String expression = "#{processInput('id')}";
Class[] parameterTypes = new Class[1];
parameterTypes[0]=String.class;
MethodExpression me = fc.getApplication().getExpressionFactory().
                      createMethodExpression(ctx, 
                      expression, returnType, parameterTypes);
button.setActionExpression(me);
button.setOnclick("alert('');"); 
于 2013-04-01T12:11:41.037 回答