title: preserving data model when using dataTable in jsf
body: <p>I wanted to create a command link column in p:dataTable so I could delete rows from the table. so I added this column to the table :</p>
  
  <pre><code>&lt;p:column&gt;
    &lt;p:commandLink process="@form" update=":growl @form"  action="#{cityManagedBean.deleteCity(cityItem)}"&gt;
      &lt;h:graphicImage library="images" name="icon/delete.png"/&gt;
    &lt;/p:commandLink&gt;
  &lt;/p:column&gt;
  </code></pre>
  
  <p>according to these threads :
  <a href="https://stackoverflow.com/questions/4994458/how-can-i-pass-a-parameter-to-a-commandlink-inside-a-datatable/4994833#4994833">How can I pass a parameter to a commandLink inside a data table?</a></p>
  
  <p><a href="https://stackoverflow.com/questions/13237557/cdi-bean-list-in-datatable-is-null-on-submit-from-jsf">CDI bean List in the data table is null on submit from JSF</a></p>
  
  <p>I understand that the data model used in the dataTable must be preserved in the post request processing. and when I changed the scope of the backing bean to conversation-scoped everything works fine now.</p>
  
  <p>but my questions are : </p>
  
  <ol>
  <li><p>why the data model must be preserved. I mean what's happening under the hood in <code>JSF</code> life cycle that, I need to preserve the data model of the dataTable?</p></li>
  <li><p>in the <code>primefaces</code> demo site in dataTable tutorial section, no converter is used when selecting and working with POJO in the dataTable. what is happening under the hood that makes it unnecessary to convert objects to Strings and vice versa?</p></li>
  <li><p>if this is possible to pass POJO from Facelets to the backing bean without converters, why it is necessary to define converters when working with selectOneMenu and SelectManyMenu components?</p></li>
  </ol>