 <p>You can know when it's postback with a function such as:</p> <pre><code>import javax.faces.bean.ManagedBean; import javax.faces.context.FacesContext; @ManagedBean public class HelperBean { public boolean isPostback() { FacesContext context = FacesContext.getCurrentInstance(); return context.getRenderKit().getResponseStateManager().isPostback(context); } } </code></pre> <p>If for every refresh the default constructor is called, that means that your bean is <code>RequestScoped</code>. A refresh (GET) or a postback (POST) are considered as requests, so the bean will be created for every request. There are other instantiation options such as <code>SessionScoped</code> or <code>ApplicationScoped</code> or just instantiate it when a <strong>postback</strong> occurs, with the above function.</p> <p>Setting the scope a-la-JSF1.2</p> <p>Edit your <code>faces-config.xml</code> file located under <code>/WEB-INF</code>:</p> <pre><code> &lt;managed-bean&gt; &lt;managed-bean-name&gt;myBean&lt;/managed-bean-name&gt; &lt;managed-bean-class&gt;com.mypackage.myBean&lt;/managed-bean-class&gt; &lt;managed-bean-scope&gt;request&lt;/managed-bean-scope&gt; &lt;/managed-bean&gt; </code></pre> <p>you can use <code>request</code>, <code>session</code> or <code>application</code></p>