2012-12-21 51 views
1

我需要在子表頭中顯示一個commandlink。頁面呈現正確,但是隻有第一個命令鏈接觸發並且action方法被調用。所有隨後的命令鏈接都不會不要求行動方法。我查看了前兩個錨元素的html源代碼。生成的id有一些細微差別。第一個鏈接的ID在j_dt68之後沒有數字,而第二個鏈接的ID有j_dt68:0。不知道它是否重要。請幫忙!p:commandLink在p:subTable中僅觸發第一個p:subTable

First commandlink's html code: 
        <a id="center_content_form:equipment_tabview:equipment-table:0:j_idt68:equipment_details_link" href="#" class="ui-commandlink" onclick="PrimeFaces.ab({source:'center_content_form:equipment_tabview:equipment-table:0:j_idt68:equipment_details_link'});return false;">DGI5120_GI:SB-5120 | 06634CVJTKH5</a> 

Second commandlink's html code: 
<a id="center_content_form:equipment_tabview:equipment-table:1:j_idt68:0:equipment_details_link" href="#" class="ui-commandlink" onclick="PrimeFaces.ab({source:'center_content_form:equipment_tabview:equipment-table:1:j_idt68:0:equipment_details_link'});return false;">DAR502G_ARRIS:TM502G | 6A7BMU47P225361</a> 


<p:dataTable id="equipment-table" styleClass="list-datatable" 
var="equipment" value="#{equipmentBean.equipmentList}" 
emptyMessage="#{equipment_msgs['equipment.table.emptyMessage']}"> 

<f:facet name="header"> 
    <p:commandButton immediate="true" id="assign_equipment" 
     icon="add-sign" styleClass="table-header-button-class" 
     title="#{equipment_msgs['assign.equipment.tooltip.text']}" 
     action="#{equipmentBean.navigateToAssignEquipmentPage()}" /> 
    <h:outputText 
     value="#{equipment_msgs['assign.equipment.button.label']}" 
     styleClass="table-header" /> 
</f:facet> 

<p:column id="port_number" 
    headerText="#{equipment_msgs['port.number.column.label']}" 
    styleClass="col10 table_text" /> 
<p:column id="port_address" 
    headerText="#{equipment_msgs['address.column.label']}" 
    styleClass="co20 table_text" /> 
<p:column id="port_type" 
    headerText="#{equipment_msgs['type.column.label']}" 
    styleClass="col20 table_text" /> 
<p:column id="port_category" 
    headerText="#{equipment_msgs['port.category.column.label']}" 
    styleClass="col20 table_text" /> 
<p:column id="service_category" 
    headerText="#{equipment_msgs['service.category.column.label']}" 
    styleClass="col20 table_text" /> 
<p:column id="occurrence" 
    headerText="#{equipment_msgs['occurrence.column.label']}" 
    styleClass="col20 table_text" /> 
<p:column id="modem" 
    headerText="#{equipment_msgs['modem.column.label']}" 
    styleClass="col10 table_text" /> 
<p:subTable var="port" value="#{equipment.portList}"> 
    <f:facet name="header"> 
     <p:separator styleClass="header-separator" /> 
     <p:commandLink id="equipment_details_link" 
      value="#{equipment.detailLinkValue}" 
      action="#{equipmentBean.navigateToEquipmentDetailsPage()}" > 
      <f:setPropertyActionListener value="#{equipment}" 
       target="#{equipmentBean.selectedEquipment}" /> 
     </p:commandLink> 
     <p:separator styleClass="header-separator" /> 
    </f:facet> 
    <p:column> 
     <p:commandLink immediate="true" id="equipment_port_details_link" 
      value="#{port.portNumber}" 
      action="#{equipmentBean.navigateToEquipmentPortDetailsPage(port.portNumber)}"> 
      <f:setPropertyActionListener value="#{equipment}" 
       target="#{equipmentBean.selectedEquipment}" /> 
     </p:commandLink> 
    </p:column> 
    <p:column> 
     <p:commandLink immediate="true" id="equipment_port_addressable_transaction_details_link1" 
      value="#{port.portAddress}" 
      action="#{equipmentBean.navigateToEquipmentAddressPortDetailsPage(port.portNumber)}"> 
      <f:setPropertyActionListener value="#{equipment}" 
       target="#{equipmentBean.selectedEquipment}" /> 
     </p:commandLink> 
    </p:column> 
    <p:column>#{port.portType}</p:column> 
    <p:column>#{port.portDetails.portCategory}</p:column> 
    <p:column>#{port.portDetails.serviceCategory}</p:column> 
    <p:column>#{port.portDetails.occurrence}</p:column> 
    <p:column>#{port.portDetails.modemText} </p:column> 
</p:subTable> 
</p:dataTable> 

回答

0

我做了一個解決辦法:

把onclick屬性上你的鏈接/按鈕(你的子表內),從ID刪除其他數字並調用PrimeFaces.ad(..)函數

這樣的:

<script type="text/javascript"> 
     function deleteMsg(id) { 
      var pattern = /(\w+:\w+:\d+:\w+)(:\d+)(:\w+)/g; 
      var newId = id; 
      if (pattern.test(id)) { 
       newId = id.replace(pattern, "$1$3"); 
      } 

      PrimeFaces.ab({source:newId,update:'formTable'}); 
      return false; 
     } 
    </script> 

,並在您的按鈕:

<p:commandButton onclick="return deleteMsg($(this).attr('id'))" actionListener="#{pSMsgController.removeMsg(_msg)}" icon="ui-icon-trash"/> 
0

試試這個。

id replace js: 

<script type="text/javascript"> 
     function deleteMsg(link) { 
      var id = link.attr('id'); 

      var pattern = /(\w+:\w+:\d+:\w+)(:\d+)(:\w+)/g; 
      var newId = id; 
      if (pattern.test(id)) { 
       newId = id.replace(pattern, "$1$3"); 
      } 

      PrimeFaces.ab({source:newId,update:link.attr('id', newId)}); 
      return false; 
     } 

CommandLink在子表頭:

<p:commandLink onclick="return deleteMsg($(this));" ... >     
相關問題