A datatable is not a loop. In fact, it's not a logical construct at all. Logical constructs are generally not something that should appear on JSF Views, since unless they're
only concerned with the presentation the way "render" EL expressions are, they corrupt the MVC architecture. At any rate, datatable is a 2-dimensional View Object, and the "loop variable" isn't technically a loop variable, it's a row reference. The difference may seem subtle, but it's critical. Incidentally, I don't recommend beginning an object/property name with "_". Sometimes JSF has additional name-format restrictions above and beyond the
Java langguage ones, and in any event, "_" is conventionally reserved for system internal variable names.
In line with datatables not being loop constructs, what actually makes more sense is to log the datatable's backing datamodel that goes out to the view, if that's what you want. The best way to do that is simply to iterate the rows at the time you bind the datamodel.
Just for the record, I don't really recommend mixing HTML and JSF tags either, but it's an uphill battle on that one.