How to handle that if the value defined by c:set refers to a var (Name of the iterator variable used to refer each data)? In that case the value couldn't be displayed.
e.g.:
<c:set var="column1_label" value="Id" scope="view" />
<c:set var="column1_value" value="#{data.id}" scope="view" />
<c:set var="column2_label" value="Code" scope="view" />
<c:set var="column2_value" value="#{data.code}" scope="view" />
<c:set var="column3_label" value="Name" scope="view" />
<c:set var="column3_value" value="#{data.name}" scope="view" />
<p:dataTable id="dataTableId" value="#{testView.products}" var="data">
<c:forEach begin="1" end="3" var="idx">
<p:column headerText="#{viewScope['column' += idx += '_label']}">
<h:outputText value="#{viewScope['column' += idx += '_value']}" />
</p:column>
</c:forEach>
</p:dataTable>