eae Amigos, pra Nf-e eu criei certos tipos enums, entao gostaria de saber como faço para pegar o valor inteiro do enum e não a String segue o código abaixo:
sei que tem um tal de ordinal mas tenho alguns enum que começam por 0 outros por 1, mas quero a maneira mais elegante, senão vou criar constantes, abraços.
todo tipo enum tem o seu valor ordinal, que é acessado pelo método ordinal(). Este método é usado por exemplo quando você coloca o enum em cláusulas case de um switch. O detalhe é que se você alterar a sequência na qual os itens do enum são declarados, o valor ordinal deles vai mudar. Ou seja, se você inserir um item na primeira posição de um Enum já existentem todos os outros itens terão seu valor ordinal alterado.
aix … Como vc está gerando seu XML (está utilizando alguma biblioteca específica ??) , pois realizei alguns com seu código postado e está printando o valor ordinal do seu Enum.
posta a maneira que é gerada seu XML que está dicordância de valores pode estar lá.
[quote=Lord]aix … Como vc está gerando seu XML (está utilizando alguma biblioteca específica ??) , pois realizei alguns com seu código postado e está printando o valor ordinal do seu Enum.
posta a maneira que é gerada seu XML que está dicordância de valores pode estar lá.
flw[/quote]
gero o xml usando as anotações do JAXB, mas para testes insiro dados nas tags do xml via os métodos set e get tipo assim
Aix fiz o seguinte teste e acredito que o código abaixo irá sanar está questão.
Criei a seguinte classe para nota fiscal com dois atributos um como o Enum que vc disponibilizou e outro que irá receber o valor ordinal deste Enum.
@XmlRootElement
public class NotaFiscal implements Serializable{
/**
*
*/
private static final long serialVersionUID = 3010892854421808033L;
private FormaPagamento formaPagamento;
private int cdFormaPagamento;
public FormaPagamento getFormaPagamento() {
return formaPagamento;
}
public void setFormaPagamento(FormaPagamento formaPagamento) {
this.formaPagamento = formaPagamento;
}
public int getCdFormaPagamento() {
return cdFormaPagamento;
}
public void setCdFormaPagamento(int cdFormaPagamento) {
this.cdFormaPagamento = cdFormaPagamento;
}
}
Testei a geração do xml com o código abaixo :
NotaFiscal nfe = new NotaFiscal();
nfe.setFormaPagamento(FormaPagamento.A_PRAZO);
nfe.setCdFormaPagamento(FormaPagamento.A_PRAZO.ordinal());
JAXBContext jaxbContext = JAXBContext.newInstance(NotaFiscal.class);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, new Boolean(true));
marshaller.marshal(nfe,new File("c:\\nfe.xml"));
[quote=Lord]Aix fiz o seguinte teste e acredito que o código abaixo irá sanar está questão.
Criei a seguinte classe para nota fiscal com dois atributos um como o Enum que vc disponibilizou e outro que irá receber o valor ordinal deste Enum.
Testa desta maneira e posta ae se o resultado … flw[/quote]