Im developing web application in jsf primefaces, im facing one problem in getting the value from the dataTable
here is my xhtml code
<p:contextMenu for="table">
<p:menuitem value="Allocate" actionListener="#{allocation.allocate}" update="msg"/>
</p:contextMenu>
<p:dataTable id="table" var="batch" value="#{allocation.batchInfoList}" rowKey="#{batch.id}"
selection="#{allocation.batchInfo}" selectionMode="single">
<p:column headerText="Tan">
<h:outputText value="#{batch.tan}" />
</p:column>
<p:column headerText="Username">
<h:outputText value="#{batch.users.curator}" />
</p:column>
<p:column headerText="Status">
<h:outputText value="#{batch.status}" />
</p:column>
</p:dataTable>
and here is my action code
package com.cation.action;
import java.util.ArrayList;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import com.cation.bean.BatchInfo;
import com.cation.bean.Users;
import com.cation.controller.CationController;
public class Allocation {
private String batchName;
private String curator;
private String tanNumber;
private List<BatchInfo> batchInfoList;
private List<String> batchList = new ArrayList<String>();
private List<Users> usersList = new ArrayList<Users>();
private BatchInfo batchInfo = new BatchInfo();
private CationController cationController = new CationController();
public String getBatchName() {
return batchName;
}
public void setBatchName(String batchName) {
this.batchName = batchName;
}
public List<BatchInfo> getBatchInfoList() {
return batchInfoList;
}
public void setBatchInfoList(List<BatchInfo> batchInfoList) {
this.batchInfoList = batchInfoList;
}
public List<String> getBatchList() {
return batchList;
}
public void setBatchList(List<String> batchList) {
this.batchList = batchList;
}
public List<Users> getUsersList() {
return usersList;
}
public void setUsersList(List<Users> usersList) {
this.usersList = usersList;
}
public String getCurator() {
return curator;
}
public void setCurator(String curator) {
this.curator = curator;
}
public String getTanNumber() {
return tanNumber;
}
public void setTanNumber(String tanNumber) {
this.tanNumber = tanNumber;
}
public BatchInfo getBatchInfo() {
return batchInfo;
}
public void setBatchInfo(BatchInfo batchInfo) {
this.batchInfo = batchInfo;
}
@SuppressWarnings("unchecked")
public Allocation() {
try {
HttpServletRequest request = (HttpServletRequest) FacesContext
.getCurrentInstance().getExternalContext().getRequest();
HttpSession session = request.getSession();
usersList = (List<Users>) session.getAttribute("allUsers");
batchList = cationController.getAllBatch();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String handleBatch() {
try {
batchInfoList = new ArrayList<BatchInfo>();
batchInfoList = cationController.getBatchByName(batchName);
} catch (Exception e) {
e.printStackTrace();
}
return "allotInput";
}
public void allocate() {
System.out.println(batchInfo);
}
}
My problem is when selecting the row value from the datatable by a right click event and selecting the allocate, it invokes the method but the object is returned as null. I am not sure whether i have put the code in the datatable tag in xhtml correctly.
can any one help me to solve this issue. Just to get the selected row value or object of it.