Jsf a4j:commandLink操作不起作用,但如果单击两次,我将替换为h:commandLink工作
JSF2.2和RichFaces4 我有三个页面,第一个页面有一个rich:dataTable,上面有人的名字,点击这个名字,然后带我到第二个页面,上面有关于这个人的信息,还有两个rich:dataTable,最后一个dataTable在第一列有一个a4j:commandLink,它将我发送到第三个页面。问题是在上一个a4j:commandLink中,它没有启动action方法,如果我用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>
<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,然后再试一次。