Jsf a4j:commandLink操作不起作用,但如果单击两次,我将替换为h:commandLink工作

Jsf a4j:commandLink操作不起作用,但如果单击两次,我将替换为h:commandLink工作,jsf,richfaces,jsf-2.2,Jsf,Richfaces,Jsf 2.2,JSF2.2和RichFaces4 我有三个页面,第一个页面有一个rich:dataTable,上面有人的名字,点击这个名字,然后带我到第二个页面,上面有关于这个人的信息,还有两个rich:dataTable,最后一个dataTable在第一列有一个a4j:commandLink,它将我发送到第三个页面。问题是在上一个a4j:commandLink中,它没有启动action方法,如果我用h:commandLink替换它,那么只需单击两次即可工作 守则: 首页 <h:form>

JSF2.2和RichFaces4

我有三个页面,第一个页面有一个rich:dataTable,上面有人的名字,点击这个名字,然后带我到第二个页面,上面有关于这个人的信息,还有两个rich:dataTable,最后一个dataTable在第一列有一个a4j:commandLink,它将我发送到第三个页面。问题是在上一个a4j:commandLink中,它没有启动action方法,如果我用h:commandLink替换它,那么只需单击两次即可工作

守则:

首页

<h:form>
    <rich:dataTable value="#{listadoClienteBacking.listadoGeneralDeCliente}" var="cli">
        <f:facet name="header">LISTADO DE TODOS LOS CLIENTES</f:facet>
        <rich:column>
            <f:facet name="header">NOMBRE DE CLIENTE</f:facet>
            <a4j:commandLink value="#{cli.nombre}" action="#{listadoClienteBacking.consultaCliente(cli.cedula)}"/>
        </rich:column>
        <rich:column>
            <f:facet name="header">EMPRESA</f:facet>
            <h:outputText value="#{cli.empresa}"/>
        </rich:column>
        <rich:column>
            <f:facet name="header">VALOR PROXIMA CUOTA</f:facet>
            <h:outputText value="#{cli.valor}">
                <f:convertNumber pattern="#,##0"/>
            </h:outputText>
        </rich:column>
    </rich:dataTable>
</h:form>
第二页

<h:form>
    //info on input
    <rich:dataTable value="#{listadoClienteBacking.listActCli}" var="act_cli" iterationStatusVar="it">
        //column with information about this people
    </rich:dataTable>
    <rich:dataTable value="#{listadoClienteBacking.listPrestCli}" var="pp" iterationStatusVar="it2">
        <rich:column>
            <f:facet name="header">NO. PRESTAMO</f:facet>
                <a4j:commandLink value="#{pp.idprestamo}" action="#{listadoClienteBacking.consultaPrestamo(pp.idprestamo)}"/>
        </rich:column>
        //other columns
    </rich:dataTable>
</h:form>
支持

@ManagedBean
@SessionScoped
public class ListadoClienteBacking{
    private Cliente objCliente = new Cliente();
    private List<DataTableCliente> listadoGeneralDeCliente = new ArrayList<DataTableCliente>();
    private List<Actividad_cliente> listActCli = new ArrayList<Actividad_cliente>();
    private List<DataTablePrestamo> listPrestCli = new ArrayList<DataTablePrestamo>();
    //construct, getter and setter
    public void inicio(){ //this run at the beginin PostConstruct
        ClienteManejador clienteManejador = new ClienteManejador();
        setListadoGeneralDeCliente(clienteManejador.listaResumenCliente());
    } //this fill the first page's info

    public String consultaCliente(String idcliente){
        ClienteManejador clienteManejador = new ClienteManejador();
        PrestamoManejador prestamoManejador = new PrestamoManejador();
        setObjCliente(clienteManejador.buscarCliente(idcliente));
        listActCli.clear();
        setListActCli(clienteManejador.buscarActCli(objCliente));
        listPrestCli.clear();
        setListPrestCli(prestamoManejador.listaResumenPrestamo(idcliente));
        return "cliente";
    } //this fill the second page's info called cliente.xhtml

    public String consultaPrestamo(int idprestamo){
        //do staff
        return "/prestamo/datosPrestamo";
    } //this should take me to the third page but don't
}

prestamoManejador,clienteManejador是POJO的,工作正常,我已经和debbuger验证过了。

我找到了答案,显然由于某种原因不能将a4j:commandLink与h:commandLink混合使用,我将所有链接组件更改为h:commandLink,工作正常。请将execute=@此添加到a4j:commandLink,然后再试一次。