Estou desenvolvendo um sistema que gera um formulário (componentes jsf) a partir de um XML. Criei uma taglib cujo componente formularioDinamico recebe um xml e processa seu conteúdo para renderizar os elementos na tela. Existe um XML schema associado ao xml que representa o formulário para validar as respostas dadas pelo usuário. Por exemplo: número máximo de dígitos de uma caixa de texto, valor numérico mínimo e máximo etc. Criei 3 parsers (JavaToXML, XMLToJava e SchemaToJava). Dentro do componente formularioDinamico o xml é transformado em um objeto java que representa um formulário através do parser XMLToJava, após submissão o formulário com as respostas pode ser recuperado em XML usando o parser JavaToXML para transformação de volta.
O sistema contém uma tabela com schemas para cada tipo de formulário (todos os formulário do tipo “A” estão associados ao schema “A” por exemplo) e uma tabela com os xml dos formulários respondidos.
Há duas situações em que o formulário pode ser carregado:
- O usuário ainda não respondeu o formulário, portanto o sistema recupera o schema;
- O usuário já respondeu o formulário, portanto o sistema recupera o xml com o formulário respondido (tags “valor” preenchidas).
Porém queremos padrinizar o componente para receber só um tipo de dados, nesse caso um xml.
Qual a melhor opção:
- Passar pro componente o schema e o xml e então montar o esqueleto do formulario a partir do schema (parserSchemaToJava) e depois atualizar os valores de resposta conforme os valores contidos no XML (no caso de um formulário ainda não respondido, o xml seria null e o componente só montaria o esqueleto).
- Passar pro componente apenas o xml com schema inline e efetuar o mesmo processo acima (nesse caso, é possível usar o Xerces para parser de schema inline?).
- Outra sugestão.
Qualquer ajuda é bem vinda,
Paulo S.