You're clearing the list each time you add a new book, and your save method also creates a new list, which wipes out the previous work; it causes all the input to be lost. Here's a working version of your controller: public class addMultipleBooksExtension { public list<Book__c> listBook{get;set;} public addMultipleBooksExtension(ApexPages.StandardController controller) { list<Book__c> listBook= new list<Book__c>(); } public void addBook(){ listBook.add(new Book__c()); } public void saveBookRecords(){ insert listBook; } }