b:dataTable中的commandButton赢得了fire action方法

时间:2016-08-16 15:31:12

标签: jsf-2 wildfly-8 bootsfaces

由于客户的需求,我刚刚开始使用BootsFaces,所以请耐心等待。

这是我的xhtml:

<h:form id="form" prependId="false">

    <b:dataTable id="dtEmpresas" value="#{recController.empresas}" var="e" searching="false" striped="true"
            styleClass="tabela" customLangUrl="../resources/js/lang-pt-br.json" paginated="false" pageLength="6" >

        <b:dataTableColumn header-style-class="hidden" styleClass="col-md-4">
            <b:selectOneMenu id="congenere" value="#{e.congenere.id}"> 
            <!-- required="true" requiredMessage="Congenere é obrigatório"> -->
                <f:selectItem noSelectionOption="true" itemLabel="[Selecione...]"
                    itemValue="#{null}" />
                <f:selectItems value="#{recController.congeneres}" var="c" 
                    itemLabel="#{c.nome}" itemValue="#{c.id}" />
            </b:selectOneMenu>
        </b:dataTableColumn>
        <b:dataTableColumn styleClass="col-md-4" header-style-class="hidden">
            <b:inputText id="nomeEmpresa" value="#{e.nomeEmpresa}" size="50" disabled="#{!e.ehOutros()}" />
        </b:dataTableColumn>
        <b:dataTableColumn styleClass="col-md-4" header-style-class="hidden">
            <b:row>
                <b:column styleClass="col-md-10">
                    <b:inputText value="#{e.cnpj}" size="50" required="false"
                        validatorMessage="CNPJ invalido 21" placeholder="CNPJ Recolhimento">
                        <f:validator validatorId="cnpjValidador" />
                    </b:inputText>
                </b:column>
                <ui:debug hotkey="j" />
                <b:commandButton value=" - " action="#{recController.removeItem(e)}" update="dtEmpresas" />
                <b:commandButton id="btAdd" value=" + " action="#{recController.addItem()}"
                    update="dtEmpresas" process="dtEmpresas" />
            </b:row>
        </b:dataTableColumn>

    </b:dataTable>

这些按钮都没有在支持bean中激活他们的方法。但是如果我移动到dataTable之外,它们就可以正常工作。

这是后面的bean,使用Deltaspike在WildFly 8上运行:

@ViewScoped
@ManagedBean
public class RecController implements Serializable{

private static final long serialVersionUID = 1L;

private List<EmpresaRecolheInss> empresas = new ArrayList<>();

@Inject
private BaseDAO dao;

@PostConstruct
public void init(){
    congeneres = dao.listar(Congenere.class);
    empresas.add(new EmpresaRecolheInss());
}

public void salvar(){
    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Salvo", null);
    FacesContext.getCurrentInstance().addMessage(null, message);
}

public void addItem(){
    empresas.add(new EmpresaRecolheInss());
}

public void removeItem(Empresa eri){
    empresas.remove(eri);
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这是我上周末修复过的BootsFaces 0.9.1数据包的错误。另请参阅https://github.com/TheCoder4eu/BootsFaces-OSP/issues/486。该错误将通过BootsFaces 1.0解决。在此之前,您可以在Maven Central上使用BootsFaces-1.0.0开发人员快照,只要您知道它不适合在生产中使用。有关如何获取“预览”版本的信息,请参阅https://github.com/TheCoder4eu/BootsFaces-OSP/issues/369