Olá pessoal, eu baixei a aplicacao da loja virtual feita com JSF + Spring-Annotation mas nao encontrei em nenhum lugar o que exatamente cada coisa faz.
Por exemplo nesse managed bean:
@Bean(name = "cadProd", scope = Scope.SESSION)
public class CadProdutos {
private RsjugBaseDao<Produto, Long> produtoDao;
@DataModel
private List<Produto> produtos;
@DataModelSelection
// @Out
// @Value("#{produto}")
@Valid
private Produto produto;
private UploadedFile uploadFile;
public UploadedFile getUploadFile() {
return uploadFile;
}
public void setUploadFile(UploadedFile uploadFile) {
this.uploadFile = uploadFile;
}
public Produto getProduto() {
return produto;
}
public void setProduto(Produto produto) {
this.produto = produto;
}
public RsjugBaseDao<Produto, Long> getProdutoDao() {
return produtoDao;
}
public void setProdutoDao(RsjugBaseDao<Produto, Long> produtoDao) {
this.produtoDao = produtoDao;
}
public List<Produto> getProdutos() {
return produtos;
}
public void setProdutos(List<Produto> produtos) {
this.produtos = produtos;
}
public String criar() {
produto = new Produto();
return "def:form";
}
@IfInvalid
public String salvar() {
if (uploadFile != null && uploadFile.getSize() > 0) {
try {
produto.setImage(uploadFile.getBytes());
produto.setContentType(uploadFile.getContentType());
} catch (IOException e) {
e.printStackTrace();
}
}
if (produto.getId() == null) {
produtoDao.save(produto);
} else {
produtoDao.update(produto);
}
return "def:form";
}
public String deletar() {
produtoDao.delete(produto);
return "def:form";
}
public String editar() {
return "def:form";
}
public String listar() {
produtos = produtoDao.listAll();
return "def:list";
}
}
para que servem as anotacoes @DataModel e @DataModelSelection?
e a anotacao @Valid do hibernate, o que ela faz no managed bean?
além disso tem a anotacao @IfInvalid, que eu também nao sei o que que faz…
o pra finalizar, como que funciona a navegacao do JSF usando Spring-Annotation já que nao tem nada no faces-config.xml?
Pelo que vi aqui, tem esse "def:list" e "def:form" que por convencao procura a pagina list ou form dentro da pasta com o nome do managed bean. E isso mesmo? E como fica nos demais casos onde eu quero enviar para uma outra pagina qualquer, como eu faço a restricao sem faces-config?
Só pra fazer um paralelo, usando XDoclet eu fazia assim
/**
* @jsf.bean name="nomeManagedBean" scope="request"
* @jsf.navigation from="*" to="/pastaManagedBean/paginaManagedBean.jsp" result="fromOutcomeManagedBean"
*/
como ficaria com o Spring-Annotation?
Eu pergunto pois pelo que andei vendo nao tem muita documentacao né, inclusive o próprio Urubatan falou isso.
Tenho muito interesse de aprender, pois parece que deixa as coisas bem mais ágeis na ora de desenvolver.
valeu pessoal, aguardo a resposta de quem puder ajudar.
E dependendo de como for, eu gostaria de poder escrever alguns tutoriais passo a passo para ajudar a documentar essa ferramenta que pra mim, mesmo ainda sem saber como usar, se fizer o que esta parecendo, para mim vai ser ótimo.


