Primefaces – selectOneMenu e Converter

Quando se usa uma lista de Objetos no selectOneMenu é necessário criar um Converter para ele. Esse Converter vai converter o itemValue do item selecionado para um objeto do Usuario(neste caso), exemplo de um Converter:

 

UsuarioConverter.java

@FacesConverter(value = “usuarioConverter“, forClass = Usuario.class)
public class UsuarioConverter implements Converter, Serializable {

private static final long serialVersionUID = 1L;

//@Inject
private Usuarios usuarios;

public UsuarioConverter() {
this.usuarios = (Usuarios) CDIServiceLocator.getBean(Usuarios.class);
}

@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Usuario retorno = null;

if (value != null) {
retorno = this.usuarios.porId(new Long(value));
}

return retorno;
}

@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value != null) {
return ((Usuario) value).getId().toString();
}
return “”;
}
}

CapaPedido.xhtml

<p:selectOneMenu id=”vendedor” converter=”usuarioConverter
           value=”#{cadastroPedidoBean.pedido.vendedor}”>
<f:selectItem itemLabel=”Selecione” />
<f:selectItems value=”#{cadastroPedidoBean.vendedores}” var=”vendedor”
itemValue=”#{vendedor}” itemLabel=”#{vendedor.nome}” />
</p:selectOneMenu>

Anúncios

Interface

Interface é um ‘contrato’, que a classe que herdar terá que ‘assinar’ e implementar os métodos da interface.

Os métodos da interface são abstratos, isto é, obrigatoriamente, devem ser implementados nas subclasses, e não na interface.

Classes distintas podem estar unidas pela interface, porque a assinatura do método que implementam são comum.

Interface reduz o acoplamento entre as classes.

Pode-se passar uma interface como argumento para um método, assim, esse método não precisa saber o que o objeto faz, porque o objeto passado como argumento é-um interface. Mas neste método, se passar um objeto que não implementa o método da interface, dará erro.

Fonte:
https://www.caelum.com.br/apostila-java-orientacao-objetos/interfaces/