E aí pessoal…
Estou fazendo alguns teste com o struts2 e estou encontrando dificuldade na validação de um campo double.
o código é o seguinte:
Arquivo ProdutoAdicionaAction-validation.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="produto.nome">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>O nome do produto é obrigatório</message>
</field-validator>
</field>
<field name="produto.descricao">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>A descrição do produto é obrigatória</message>
</field-validator>
</field>
<field name="produto.preco">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>O Preço do produto é obrigatório</message>
</field-validator>
</field>
<field name="produto.preco">
<field-validator type="double">
<param name="min">0</param>
<message>Formato do preço inválido.</message>
</field-validator>
</field>
</validators>
arquivo adicionaProduto.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<title>Adicionar um novo produto</title>
<body>
<s:form action="adicionaproduto" method="POST" validate="true">
<tr>
<td colspan="2" align="center"> Dados do produto</td>
</tr>
<tr>
<td colspan="2" align="center"><font color="red"><s:actionerror/>
<s:fielderror/></font></td>
</tr>
<s:textfield name="produto.id" label="Id"/>
<s:textfield name="produto.nome" label="Nome"/>
<s:textfield name="produto.descricao" label="Descrição"/>
<s:textfield name="produto.preco" label="Preço"/>
<s:submit value="Gravar" align="center"/>
</s:form>
</body>
</html>
O seguinte trecho em javascript é gerado pelo validador double:
// field name: produto.preco
// validator name: double
if (form.elements['produto.preco']) {
field = form.elements['produto.preco'];
var error = "Formato do preço inválido.";
if (field.value != null) {
var value = parseFloat(field.value);
if (false ||
false ||
false ||
false) {
addError(field, error);
errors = true;
}
}
}
O problema é que nunca valida o compo “produto.preco”, ele sempre passa mesmo se eu digitar um texto e, neste caso ele deveria dar a mensagem de formato do preço inválido.
Alguém tem idéia do que possa ser?
Obrigado