【问题标题】:p:commandLink not working with dataTablep:commandLink 不适用于数据表
【发布时间】:2013-10-10 22:09:36
【问题描述】:

我的 dataTable 由 ajax 调用填充,我的 commandLink(在 datataable 中)未指向正确的位置,并且始终呈现相同的页面。并在控制台中显示: HtmlLabelRend W id 为 j_id1471051656_3ffdbef6:j_id1471051656_3ffdbfc6 的标签组件的属性“for”未定义

但是当我将命令链接放在数据表之外时,操作方法可以正常工作。

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

提前致谢。

我的 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";

}}

【问题讨论】:

  • 为什么你把 p:commandButton 放在 p:commandLink 里面,它没有意义!
  • 在数据表中试试这个代码:&lt;h:commandLink action="#{bajaController.mostrarSolicitudBaja(80003,340)}" ajax="false" value="theNameOfLink"&gt; &lt;/h:commandLink&gt;
  • 嗨,我把代码放在了数据表中,但我返回了一个不同的页面(主页)。
  • 这个代码&lt;h:commandLink action="#{bajaController.mostrarSolicitudBaja(80003,340)}" value="theNameOfLink"/&gt;
  • 没什么,我得到了同样的结果.....

标签: jsf jsf-2 primefaces


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,我一直在努力寻找解决方案,但对我没有任何帮助。这是我最终解决问题的方法:

    • 我删除了ajax 属性
    • 我添加了process="@this"

    这是我的 commandLink 在更改后的样子:

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

    我希望这可以帮助某人。 /米\

    【讨论】:

      【解决方案3】:

      删除 ajax="false" 标签,它对我有用

      【讨论】:

        【解决方案4】:

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

        真的没必要在命令链接里面放一个命令按钮,放个图标就行了

        【讨论】:

          猜你喜欢
          • 2012-07-16
          • 1970-01-01
          • 1970-01-01
          • 2017-05-12
          • 1970-01-01
          • 1970-01-01
          • 2014-11-10
          • 2013-11-14
          • 1970-01-01
          相关资源
          最近更新 更多