• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2930
  • Last Modified:

How to capture the clicked row number in a p:dataTable from the backer bean?

I have tried this, But I do not get the value printed. Instead an exception. Can someone help?

<p:dataTable id="theTable"  var="theTableIterator"
    value="#{theBean.jobList}"
    selection="#{theBean.selectedRow}"
    rowIndexVar="rowIndex"
    widgetVar="datatableVar" >

    <p:column>
          <p:commandLink value="#{theTableIterator.jobName}"
                        style="#{theBean.styleString}"
                        update="theTable"
                       actionListener="#{theBean.goToClickedLink()}"
    />
   </p:column>  
        
        <p:column>
          <p:outputLabel value="#{theTableIterator.jobDescription}"
style="#{theBean.styleString}" />


public void goToClickedLink()
{      
   try {
      FacesContext context = FacesContext.getCurrentInstance();
      DataTable dt = (DataTable)
                  FacesContext.getCurrentInstance().getViewRoot().findComponent("theTable");
      
               System.out.println("Row Index : " + dt.getRowIndex());
        }
        catch (Exception e) {
                         
        }
            
      }
0
prain
Asked:
prain
  • 2
1 Solution
 
mccarlIT Business Systems Analyst / Software DeveloperCommented:
Again, I don't know too much about JSF/Primefaces but since no one else has commented with a solution, I'll give what I think *MAY* work...

Try this, in your p:commandLink can you pass variables as arguments, where "rowIndex" is what you defined in your p:dataTable as the rowIndexVar, ie...
          <p:commandLink value="#{theTableIterator.jobName}"
                        style="#{theBean.styleString}"
                        update="theTable"
                       actionListener="#{theBean.goToClickedLink(rowIndex)}"  />

Open in new window

And then in your Java code, you might be able to define the ActionListener to accept that variable...
public void goToClickedLink(int rowIndex)
{
    // do something with "rowIndex"
}

Open in new window

0
 
prainAuthor Commented:
You Buty. Thanks a bunch. I do not know why I did not think in that way.
0
 
mccarlIT Business Systems Analyst / Software DeveloperCommented:
Glad it worked for you! :)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: Certified Penetration Testing

This CPTE Certified Penetration Testing Engineer course covers everything you need to know about becoming a Certified Penetration Testing Engineer. Career Path: Professional roles include Ethical Hackers, Security Consultants, System Administrators, and Chief Security Officers.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now