my application show the list of customer using richfaces datatable as show in image:

When user click the edit option an editable row must appear to edit the row data like in image:

my jsf page index.xhtml
<h:form>
<rich:panel style="width:100%;" header="List of Customer" >
<rich:dataTable style="width: 100%;" value="#{customerDataBaseQuery.customerDataModel}" var="c" rowClass="odd even" columnClasses=" c1,c2,c3,c4,c5,c6,c7"
onrowmouseover="this.style.fontWeight='bold'" onrowmouseout="this.style.fontWeight='normal'">
<rich:column>
<f:facet name="header">First Name:</f:facet>
<h:inputText value="#{customerDataBaseQuery.customer.firstName}" rendered="#{c.cusEditFlag}" />
<h:outputText value="#{c.firstName}" rendered="#{not c.cusEditFlag}" />
</rich:column>
<rich:column>
<f:facet name="header">Last Name:</f:facet>
<h:inputText value="#{customerDataBaseQuery.customer.firstName}" rendered="#{c.cusEditFlag}" />
<h:outputText value="#{c.lastName}" rendered="#{not c.cusEditFlag}" />
</rich:column>
<rich:column>
<f:facet name="header">Address</f:facet>
<h:inputText value="#{customerDataBaseQuery.customer.address}" rendered="#{c.cusEditFlag}" />
<h:outputText value="#{c.address}" rendered="#{not c.cusEditFlag}" />
</rich:column>
<rich:column>
<f:facet name="header">Phone No:</f:facet>
<h:inputText value="#{customerDataBaseQuery.customer.phone}" rendered="#{c.cusEditFlag}" />
<h:outputText value="#{c.phone}" rendered="#{not c.cusEditFlag}" />
</rich:column>
<rich:column>
<f:facet name="header">View Record:</f:facet>
<h:commandLink id="view" value="View" action="#{customerDataBaseQuery.assignCustId(c.id,c.firstName,c.lastName)}" rendered="#{not c.cusEditFlag}" styleClass="lk"/>
</rich:column>
<rich:column>
<f:facet name="header">Edit Record:</f:facet>
<h:commandLink id="Edit" value="Edit" styleClass="lk" action="#{customerDataBaseQuery.cusEditAction(c)}" rendered="#{not c.cusEditFlag}" />
<h:commandLink id="Save" value="Save" styleClass="lk" action="#{customerDataBaseQuery.cusSaveAction(c)}" rendered="#{c.cusEditFlag}"/>
</rich:column>
<rich:column>
<f:facet name="header">Remove Record:</f:facet>
<h:commandLink id="Remove" value="Remove" styleClass="lk" action="#{customerDataBaseQuery.deleteCustomer(c.id)}" rendered="#{not c.cusEditFlag}"/>
</rich:column>
</rich:dataTable>
</rich:panel>
</h:form>
My Bean class CustomerDatabaseQuery.java
@ManagedBean()
@SessionScoped
public class CustomerDataBaseQuery {
private DataModel customerDataModel;
private DataModel creditDataModel;
private Customer customer;
private Items items;
private CustomerHelper customerHelper;
private int custID;
private String fName;
private String lName;
public CustomerDataBaseQuery(){
customer=new Customer();
items=new Items();
customerHelper=new CustomerHelper();
}
public String assignCustId(int ID,String f,String l){
custID=ID;
fName=f;
lName=l;
return "View";
}
public void cusSaveAction(Customer c){
c.setCusEditFlag(false);
}
public String cusEditAction(Customer c){
c.setCusEditFlag(true);
return null;
}
public void itemSaveAction(Items i){
i.setItemEditFlag(false);
}
public void itemEditAction(Items i){
i.setItemEditFlag(true);
}
public String getFName() {
return fName;
}
public void setFName(String fName) {
this.fName = fName;
}
public String getLName() {
return lName;
}
public void setLName(String lName) {
this.lName = lName;
}
public void setCustId(int custID){
this.custID=custID;
}
public int getCustID(){
return custID;
}
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
public DataModel getCustomerDataModel(){
customerDataModel = new ListDataModel(customerHelper.getCustomerRecord());
return customerDataModel;
}
public /*String*/ void insertCustomer(){
/*String returnString =*/ customerHelper.saveCustomerRecord(customer);
//return returnString;
}
public void deleteCustomer(int ID){
customerHelper.deleteCustomerRecord(ID);
}
public Items getItems() {
return items;
}
public void setItems(Items items) {
this.items = items;
}
public DataModel getCreditDataModel(){
creditDataModel = new ListDataModel(customerHelper.getCreditRecord(custID));
return creditDataModel;
}
public /*String*/ void insertCreditRecord(){
items.setCustomerId(custID);
/*String returnString =*/ customerHelper.saveCreditRecord(items);
//return returnString;
}
public void deleteCredit(int ID){
customerHelper.deleteCreditRecord(ID);
}
}
At first <h:outputText> will render as the value of variable cusEditFlag is false. When edit command link is clicked then the value of variable cusEditFlag is set true. After setting its value true <h:inputText> must render but it doesn't happen. I also look the value of variable doing debug while clicking the edit command link the value of variable changes to true but also it doesn't work. I learn the similar article for here only difference is he is using jsf datatable and I am using richfaces datatable. Does the dsf datatable and richfaces datatable has differences doing such tasks? or I am doing mistake can anyone figure it out.