p:commandLink不能与dataTable一起工作。

问题描述 投票:0回答:4

我的dataTable是由ajax调用填充的,我的commandLink(在dataable中)没有指向正确的位置,总是渲染同一个页面。

但是当我把commandlink放在datatable外面的时候,action方法就可以正常工作了。

这个问题很少见!,我如何解决?

先谢谢你了。

我的Jsf页面。

<h:form>
        <p:panel header="Busqueda">
            <p:panelGrid style="width:100%;">
                <p:row>
-----------------------------------(inputs)---------------------------------------
                    <p:column>
                        <p:commandButton value="Buscar" update="grilla"
                            action="#{devolucionAdminController.buscarSD()}">´
                            </p:commandButton>
                    </p:column>
                </p:row>
            </p:panelGrid>
            <p:messages closable="true" redisplay="true" id="msj"></p:messages>
        </p:panel>
        <p:dataTable id="grilla" var="r"
            value="#{devolucionAdminController.listado}"
            emptyMessage="No se han encontrado solicitudes de devolución">
            <p:column headerText="Sec">
                <h:outputText value="#{r.idSoliDevo}" />
            </p:column>
            <p:column headerText="Cuenta">
                <h:outputText value="#{r.cuentaId}" />
            </p:column>
            <p:column headerText="Ver Detalle Sol. Dev ">
                <p:commandLink 
                    action="#{bajaController.mostrarSolicitudBaja(r.cuentaId,r.idSoliDevo)}" ajax="false">
                    <p:commandButton icon="ui-icon-search" title="Ver Detalle" />
                </p:commandLink>
                </p:column>
        </p:dataTable>

<!--works fine  -->
    <p:commandLink action="#{bajaController.mostrarSolicitudBaja(80003,340)}"
            ajax="false">
            <p:commandButton icon="ui-icon-search" title="Ver Detalle" />
        </p:commandLink>
        </h:form>

我的第一个托管Bean

@ManagedBean
@RequestScoped
public class DevolucionAdminController {
 List<TaSoliDevo> listado;
//getters and setters
........................
public void buscarSD() {

   .............................
}

我的第二个托管 Bean:

@ManagedBean
@RequestScoped
public class BajaController {

    public String mostrarSolicitudBaja(long cuentaId, long solicDevId) {
    .........................
    return "goResult";

}}
jsf jsf-2 primefaces
4个回答
0
投票

将你的commandLink替换为

<p:commandButton  icon="ui-icon-search" title="Ver Detalle"
action="#{bajaController.mostrarSolicitudBaja(r.cuentaId,r.idSoliDevo)}" ajax="false"/>

真的不需要在命令Link里面放一个命令按钮,只要放一个图标就可以了。


1
投票

使用process="@this "并使用actionListener代替action

<p:commandLink process="@this" actionListener="#{bajaController.mostrarSolicitudBaja(80003,340)}"></p:commandLink>

0
投票

去掉ajax="false "标签,它对我来说是有效的。


0
投票

我也遇到了同样的问题,我一直在苦苦寻找解决的办法,但是没有任何办法让我满意。下面是我最终解决这个问题的方法。

  • 我删除了 ajax 属性
  • 我补充道 process="@this"

下面是我的commandLink修改后的样子。

<p:commandLink process="@this" action="#{projsSummaryBacking.redirectProjTasks(proj)}" >
   <h:outputText value="#{proj.title}" />
</p:commandLink>

我希望这能帮助到大家。

© www.soinside.com 2019 - 2024. All rights reserved.