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

Apa perbedaan antara mendefinisikan View Params seperti ini: <f:metadata> <f:viewParam name="id" value="#{someBean.id}"/> </f:metadata> Dan mendefinisikan properti di ManagedBean seperti ini: @ManagedProperty(value = "#{param.id}") private Integer