This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
You could probably use panelGrid if your data is static. If you have dynamic data, use the Datatale.
By the way in your html code, I see that your second row has only 3 columns while the others have 4. I guess you have missed to add colspan attribute there. Let us know the correction and also let me know if I've understood wrong.
The key really is whether this is just static data, or whether there is a collection that contains this data that will change in size?
A JSF dataTable is designed to loop through lists or collections of objects. If your data, each row that is, can be organized into a Java object that can be thrown into a list, then you'll get the most effective use from a dataTable.