I have a dynamically generated Datatable, like this
    DataTable dataTable = new DataTable();
    dataTable.setValue(relatorioVOList);
    dataTable.setVar("rVO");
    Column checkBoxColumn = new Column();
    checkBoxColumn.getChildren().add(this.viewComponentBuilder.createExpressionTextWithLink("#{rVO.iRelatorio}","#{rVO.nNome}"));
    dataTable.getColumns().add(checkBoxColumn);
public HtmlForm createExpressionTextWithLink(String iRelatorioExpressionValue, String valueExpressionValue) {
    HtmlForm form = new HtmlForm();
    HtmlCommandLink link = new HtmlCommandLink();
    //config
    FacesContext context = FacesContext.getCurrentInstance(); 
    Application application = context.getApplication();
    ExpressionFactory ef = application.getExpressionFactory();
    ELContext elc = context.getELContext();
    //value that is the reports name
    ValueExpression nameValueExp = ef.createValueExpression(elc, valueExpressionValue, Object.class);
    link.setValueExpression("value", nameValueExp);
    //action that goes to method teste when link is clicked
    MethodExpression methodExpression = createMethodExpression("#{componenteC.teste(rVO.iRelatorio)}", String.class, Integer.class);
    link.setActionExpression(methodExpression);
    form.getChildren().add(link);
    return form;
}
private static MethodExpression createMethodExpression(String expression, Class<?> returnType, Class<?>... parameterTypes) {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    return facesContext.getApplication().getExpressionFactory().createMethodExpression(
            facesContext.getELContext(), expression, returnType, parameterTypes);
}
In ComponenteC, a RequestScopedBean, the teste function
public String teste(Integer iRelatorio) {
    System.out.println("cheguei");
    return "componente";
}
The goal is that the teste function will generate an url according to the iRelatorio parameter. The issue here is that the function is never called. I tried replacing the rVO.iRelatorio with an explicit 10, "#{componenteC.teste(10)}" and even then the action seems to not be fired. The report name is displayed correctly.
 
     
    