The following seems to be ignore inside XHTML facelet templates:
Unfortunately, that's by spec. Your best bet is to use @ManagedProperty instead.
public class BackingBean {
@ManagedProperty("#{param.id}")
private Long id;
// ...
}
The only disadvantage is that this doesn't offer the advantage of using declarative conversion/validation by XHTML. You can if necessary do this job in a @PostConstruct method.