1

我创建了以下自定义标签:

<h:form>
<d:formBuilder/>        
</h:form>

标签呈现没有这样的问题:

我的自定义标签

标记代码:

public class FormBuilder extends TagHandler {

    public FormBuilder(TagConfig config) {
        super(config);
    }

    public void apply(FaceletContext context, UIComponent parent) throws IOException {
        CommandButton command = (CommandButton) context.getFacesContext().getCurrentInstance().getApplication().createComponent( CommandButton.COMPONENT_TYPE);
        command.setValue("Click");
        command.setAjax(false);
        MethodExpression me = context.getExpressionFactory().createMethodExpression(FacesContext.getCurrentInstance().getELContext(), "#{cli.insert}", null, new Class<?>[0]);
        command.setActionExpression(me);

        InputText it = (InputText) context.getFacesContext().getCurrentInstance().getApplication().createComponent(InputText.COMPONENT_TYPE);       
        ValueExpression ve1 = context.getExpressionFactory().createValueExpression(FacesContext.getCurrentInstance().getELContext(), "#{cli.name}", String.class);      
        it.setValueExpression("value", ve1);        

        parent.getChildren().clear();       
        parent.getChildren().add(it);
        parent.getChildren().add(command);
    }

}

托管bean:

@SessionScoped
@ManagedBean(name = "cli")
public class ClienteController {

    private String name = "aa";

    public String insert() {
        name = "test";
        return "clientes";
    }
}

inputText 工作正常,但 commandButton 没有执行 managedBean 的方法!怎么了?

谢谢。

4

3 回答 3

0

这个答案会帮助你.. 为什么命令按钮没有被调用?

于 2012-07-11T05:09:27.687 回答
0

奇怪的是,我遇到了同样的问题,但我使用的是 EL 表达式。我解决了删除标签“type=button”的问题。我知道,没有逻辑,但只能删除标签。

PS:Primefaces 3.4

于 2012-12-14T12:44:07.313 回答
0

该按钮与代码一起使用:

   ExpressionFactory ef = context.getFacesContext().getCurrentInstance().getApplication().getExpressionFactory();
MethodExpression me = ef.createMethodExpression(ec, "#{cli.insert}", null, new Class[]{ActionEvent.class});
MethodExpressionActionListener meal = new MethodExpressionActionListener( me );
command.addActionListener(meal);
command.setType( "submit" );
于 2012-07-12T00:50:59.617 回答