ViewParam vs @ManagedProperty (value = “# {param.id}”)

Qual é a diferença entre definir parâmetros de visualização como este: <f:metadata> <f:viewParam name="id" value="#{someBean.id}"/> </f:metadata> E definindo a propriedade no ManagedBean assim: @ManagedProperty(value = "#{param.id}") private Integer