以下是我以编程方式创建<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)
功能。但是,当我点击该按钮时,没有任何反应。
答案 0 :(得分: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('');");