Conversão de Data em Struts2

Eu estou querendo saber como converter uma String para Date in Struts2. Eu tenho um formulário simples em que o usuário fornecer a data neste formato "yyyy-MM-dd" . Depois de enviar os mapas Sturts2, faça isso para o bean. Eu tenho erro na conversão de data. Eu o Google muito e em todo lugar é dito que temos que usar o conversor de tipo personalizado para isso. Eu não quero escrever um conversor de tipo personalizado para conversão de data. Eu acho que deve haver um mecanismo fácil no Struts2 para conversão de dados, porque a conversão de dados é uma funcionalidade muito comum.

JSP

            

Esta é a JSP Onde o usuário insere a input.

Classe de modelo

 @Entity @Table(name = "Domain") public class IdentityProvider implements Serializable { @Id @Basic(optional = false) private String url; private String domainName; private int noOfLicense; private int userActiveDuration; private int activeUsers; private Date licenseExpireDate; private String notes; @GeneratedValue(strategy = GenerationType.IDENTITY) private String domainIdCode; public IdentityProvider(String name, String url, int nol, int time,Date d,String notes) { this.setDomainName(name); this.setUrl(url); this.setNoOfLicense(nol); this.setUserActiveDuration(time); this.setLicenseExpireDate(d); this.setNotes(notes); } public IdentityProvider() { } // Getter Setter } 

Classe de ação

 public class DomainManagementAction extends ActionSupport implements ModelDriven { private IdentityProvider idp = new IdentityProvider(); public IdentityProvider getIdp() { return idp; } public void setIdp(IdentityProvider idp) { this.idp = idp; } public String saveDomain() { IDPBroker broker = new IDPBroker(); broker.saveDomain(idp); return ActionSupport.SUCCESS; } @Override public IdentityProvider getModel() { // TODO Auto-generated method stub return idp; } } 

Conversão de Tipo Struts2

Suporte embutido de conversão de tipo

Conversão de tipo é implementada pelo XWork.

O XWork processará automaticamente a conversão de tipo mais comum para você. Isso inclui suporte para conversão de e para seqüências de caracteres para cada um dos seguintes:

Corda
booleano / booleano
char / personagem
int / Integer, flutuar / flutuar, longo / longo, duplo / duplo
datas – usa o formato SHORT para o local associado à solicitação atual
matrizes – assumindo que as cadeias individuais podem ser convertidas para os itens individuais
collections – se não for possível determinar o tipo de object, ele será considerado uma String e uma nova ArrayList será criada

Formato abreviado em JAVA:

 Style US Locale French Locale SHORT 6/30/09 30/06/09 

Isso significa que ele já funciona, mas apenas no formato SHORT e não é configurável. Tente.

Então você pode alterar o valor do cliente com algum hack de javascript antes de enviá-lo, ou copiar e colar este pequeno conversor , ou usar um datetimepicker jQuery (recomendado), e seu único problema será qual tema é o mais legal 🙂


EDITAR

Depois de algum comentário de criptografia, eu tentei e, obviamente, é como os estados das documentações.

  • Se o seu local é (por exemplo) en_US , você precisa enviar um dado String no formato MM/dd/yy .
  • Se o seu local é (por exemplo) it_IT , você precisa enviar um dado String no formato dd/MM/yy .
  • Se você inserir dd/MM/yy com en_US Locale, você receberá um erro de validação e um resultado INPUT.
  • Se você tentar usar - vez de / , o mesmo falhará.
  • Se você inserir uma data em outro formato, por exemplo. dd/MM/yyyy (diferente de SHORT, mas certo para o seu local), sua data será definida corretamente o mesmo.
  • Se você ler sua data de Ação no JSP sem formatá-la, ela será sempre exibida em SHORT.

Então, como dito acima, se você precisar permitir que o usuário insira a data manualmente, diga ao usuário para respeitar o formato correto para o seu local (por exemplo,

    

Ou altere-o através do javascript depois de inserido ou use um conversor personalizado.

    Intereting Posts