Estou usando webwork e apanhando um poquinho. A dúvida de agora é a seguinte: o WW está formatando tudo (datas, números) no formato americado - data=MM/DD/YYYY, grana=100.0. É possível alterar alguma configuração para que ele passe a exibir as informações da maneira como usamos no Brasil?
Outra coisa: em função do formato que ele usa, quando eu submeto alguma data a partir de uma página, por exemplo 02/08/2004, ele seta o meu objeto Date com “Oito de fevereiro de 2004” e não como “Dois de agosto”. Como eu faço para resolver isso?
Para resolver você vai ter que escrever seu prórprio converter pro objeto Date, um conversor que considere o Locale selecionado pelo usuário pra fazer a conversão é uma boa.
ps.: Smota, cadê a versão 2.0 do tutorial do WebWork - Técnicas avançadas?
cv1
WebWork-fu! :mrgreen:
smota
:oops: :oops: :oops: :oops:
Não tenho nada planejado por hora, eu estava atolado com meu TG. Se todo mundo torcer direitinho pra minha apresentacao amanha e tudo der certo eu escrevo um rapidim :shock:
O que tá faltando para ele reconhecer a classe conversora que criei?
Obrigado a todos,
Gleison
smota
O seu arquivo MinhaClasse-conversion.properties não deve estar na raiz da sua aplicação e sim na mesma package que MinhaClasse
Se quiser que seja padrão pra todo mundo usar, registre no arquivo xwork-conversion.properties e esse sim na raiz do classpath.
Gleison_Silva
Mota,
Com a sua dica, funcionou. O WW está encontrando a classe que escrevi. No entanto, ela não tá funcionando…
Quando sobrescrevo o método public Object convertValue(Map ognlContext, Object value, Class toType) … a variável “value” é do tipo String? Executando System.out.println(value.getClass()), foi isso que pude constatar (acho!). Então se ela é uma String, pq é que não consigo ver o valor dela quando executo System.out.println(value)?
Obrigado,
Gleison Silva
smota
Ueba …
Existem 2 momentos de conversão:
Na apresentacao: Seu objeto é naturalmente uma Date e vc quer mostrar na tela entao vai virar uma String; e
No preenchimento: O cara digitou na tela entao eh uma String e vc vai setar a propriedade que eh Date.
O Conversor tem que saber fazer as 2 coisas pra ser útil …
de uma brincada com isso por ai e poste o codigo completo do conversor depois disso se ainda tiver algum problema.
Gleison_Silva
Bom dia!
Pois bem, no momento do “Preenchimento”, a varíavel é String e vou convertê-la para Date. Estou tentando fazer isso usando o método “parse” do “SimpleDateFormat”. Esse método usa uma String como parâmetro. E aí que eu garrei! Quando passo a varíavel “value” como parâmetro para o método ele lança uma exceção como se “value” não fosse String.
Tem alguma luz para me dar?
Obrigado,
Gleison
smota
A sua descrição não bate com o código que você passou.
No código public Object convertValue(Map ognlContext, Object value, Class toType){
logger.info("[CONVERSION CONVERSION CONVERSION]");
if(toType == String.class){
logger.info("[JHIS WEB] Conversão para String: toType=String.class");
try {
logger.info("[JHIS WEB] Valor: " + (String) value);
Date d = new SimpleDateFormat("dd/MM/yyyy").parse((String)value);
return d;
} catch (ParseException e) {
logger.error(e.getMessage());
}
}
return null;
}
o toType é a classe String então o value na verdade tem o valor que seu getCampo() rertorna, provavelmente um Date.
Quando estiver preenchendo a propriedade o Webwork vai chamar seu conversor com o toType da classe Date e o value terá sim uma String.
Gleison_Silva
Mota,
Primeiramente, obrigado pela atenção…
Esse código que postei, não é o que estou tentando fazer funcionar. Ainda estou estudando o funcionamento desse conversor, por isso os código não estão completos. O toType, no momento do preenchimento é Date.class. O código que não tá funcionando é:
No método “parse” já tentei usar “String.valueOf(value)” ao invés de “value.toString()”, mas tb não funcionou…
Abraço,
Gleison
C
chicobento
Olá Gleison, hj tive o mesmo problema que vc.
Minha primeira atitude foi fazer uma busca no GUJ e ver se achava algo e ví esse topico. Como ele não resolveu meu caso, apanhei um pouco e acabei descobrindo…
Não sei se vc já o resolveu, mas vou deixar registrado para quem tiver o mesmo problema…
String[] v = (String[]) value;
String date = v[0];
Assim vc consegue obter a String sem os ClassCastExceptions da vida…
Depois é só parsear: