I found the problem, since I'm passing in something to this method it's not a getter method so I have to provide the full method name: getValue
not just value
:
<table>
<tr th:each="row : ${table.rows}">
<td th:each="column : ${table.columns}">
<span th:text="${column.getValue(row)}"/>
</td>
</tr>
</table>