Pergunta

Eu herdei esse legado aplicativo web Java gigantesco usando Struts 1.2.4. Eu tenho uma pergunta específica sobre ActionForms. Alguns deles têm apenas propriedades de cadeia (mesmo para números), alguns deles usam os tipos aparentemente apropriados (Integer, data, corda, etc). Qual é a melhor prática aqui?

Além disso, parece que, se uma propriedade é do tipo Integer, e o valor que o usuário inseriu não é um valor inteiro, Struts silenciosamente engole isso e não só não definir a propriedade. O que há com isso?

Foi útil?

Solução

Para Struts 1,2x, propriedades onde o usuário entra ou valores seleciona no formulário HTML e que são preenchidos na instância ActionForm automaticamente pelas tags Struts HTML devem ser strings ou booleans. No entanto, não há nenhuma razão para que seu ActionForm não pode ter métodos getter que retornam as propriedades como tipos mais significativas para a sua aplicação, por exemplo, Data.

Outras dicas

Se você quiser fazer alguma validação si mesmo (ou usar os recursos de validação struts que foram refatorado fora do struts mais tarde do que 1.2) você vai precisar de propriedades de cadeia para exatamente a razão que você citar: Uma vez que você armazenar valores numéricos em Integer ou valores int, eles deve ser números ou "nada" - caso contrário:? Como você armazenar "muito" (literalmente) em uma propriedade Integer

Cliente Validação Side (por exemplo em JavaScript) que o trabalho ainda, mas você não quer contar com isso.

Se - ao entrar um número inválido - você está bem com o usuário que está sendo apresentado um campo em branco, você pode armazenar valores em data-, Integer-, seja qual for-Properties. Se você gostaria de apresentar o valor original com a mensagem de erro, você vai precisar da propriedade String.

Isto tem o preço que você precisa fazer a conversão manualmente. Como Struts 1.2 é bastante antigo que você pode querer pensar sobre gradualmente substituir sua infra-estrutura de aplicativos com a tecnologia mais moderna e operar em duas tecnologias (o velho e o novo) ao mesmo tempo por um tempo até a parte antiga fica pequeno o suficiente (ou sem importância o suficiente) para ser descartado.

nb - você também terá mais controle sobre o que valoriza você quiser aceitar como números. Ainda me lembro de um cartão de crédito Struts-banking aplicação idade em que eu perguntei ao meu gerente que o resultado esperado é quando você gostaria de retirar 3E2 Euro do seu cartão. Eles não disseram 300 (como Struts convertido) mas optou por um erro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top