Fórum GenericPresentationModel #15976
20/02/2010
0
veja a documentação desta classe no link abaixo: C:\JGoodies\docs\binding\api\com\jgoodies\binding\PresentationModel.html esta é uma classe que realiza o bind das propriedades de um bean com seu editor(formulário onde os dados são apresentados). Da forma como ela esta tudo funciona normalmente exceto o metodo abaixo: private void updateValidationResult() {
Order order = (Order) getBean();
ValidationResult result = new OrderValidator().validate(order);
validationResultModel.setResult(result);
} onde é necessário realizar um cast para o objeto de negócio desejado exemplo: Order order = (Order) getBean(); Categoria categoria (Categoria) getBean(); Cidade cidade (Cidade) getBean(); O problema reside no fato de que o metodo getBean() da classe PresentationModel<B> a qual é superClasse da que estou tentando implementar esta retornando Object e não o objeto passado como parametro quando eu a instancio como abaixo: public ComponentFeedbackExample() { orderModel = new OrderModel(new Order()); }Observer que passei um objeto do tipo Order. Existe uma maneira de resolver este problema do cast para tornar o componente genérico? Observe que este é o primeiro ponto a ser resolvido o proximo é: realizar a instanciação da classe correta de validação de acordo com cada objeto passado. Exemplo: se eu passar um objeto do tipo Order eu tenho que instanciar sua classe de validação correspondente no metodo updateValidationResult() que foi descrito acima. ValidationResult result = new OrderValidator().validate(order);
ValidationResult result = new CategoriaValidator().validate(categoria); ValidationResult result = new SubCategoriaValidator().validate(subCategoria);
Sera que estou no caminho correto? Se você quiser ai esta o link para o codigo fonte completo do exemplo. http://video.devmedia.com.br/discovirtual/200152/GenericPresentationModel/Copy of Validation.zip /**
* Provides all models to bind an order editor to its domain model,
* an instance of {@link Order}.
*
* @author Karsten Lentzsch
* @version $Revision: 1.15 $
*/
public class OrderModel<T> extends PresentationModel<T> { private final ValidationResultModel validationResultModel; // Instance Creation ****************************************************** public OrderModel(T order) {
super(order);
validationResultModel = new DefaultValidationResultModel();
initEventHandling();
updateValidationResult();
}
// Exposing Models ******************************************************** public ValidationResultModel getValidationResultModel() {
return validationResultModel;
}
// Initialization ********************************************************* /**
* Listens to changes in all properties of the current Order
* and to Order changes.
*/
private void initEventHandling() {
PropertyChangeListener handler = new ValidationUpdateHandler();
addBeanPropertyChangeListener(handler);
getBeanChannel().addValueChangeListener(handler);
}
// Event Handling ********************************************************* private void updateValidationResult() {
---------------- Order order = (Order) getBean(); ----------------------
ValidationResult result = new OrderValidator().validate(order);
validationResultModel.setResult(result);
}
/**
* Validates the order using an OrderValidator and
* updates the validation result.
*/
private final class ValidationUpdateHandler implements PropertyChangeListener { public void propertyChange(PropertyChangeEvent evt) {
updateValidationResult();
} } }
Israel Barbosa
Curtir tópico
+ 0Posts
24/02/2010
Henrique Weissmann
o link incluido no seu chamado aponta para o seu HD local. Será que você poderia disponibilizar este texto em algum lugar na Internet para que eu possa avaliá-lo?
Gostei + 0
25/02/2010
Israel Barbosa
Gostei + 0
25/02/2010
Henrique Weissmann
vamos ao primeiro problema:
"(...) Existe uma maneira de resolver este problema do cast para tornar o componente genérico?"
Não há muito o que fazer neste caso. Essencialmente, por retornar uma instância de Object o método já é o mais genérico possível visto ser Object a classe base de todas as outras. Nâo sei se é o caso, mas já vi bibliotecas que foram feitas para dar suporte ao Java pré 1.5 apresentar probleams com o uso de genéricos. Pode ser que seja o caso.
Agora com relação ao segundo problema: na realidade, não há problema algum Israel, você está indo no caminho certo. É exatamente assim que se faz.
Gostei + 0
13/03/2010
Israel Barbosa
Gostei + 0
14/03/2010
Henrique Weissmann
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)