Estou com uma dúvida no VRaptor (sou iniciante) e não consegui entender como fazer, é o seguinte, tenho um bean anotado como @Component e @SessionScoped e gostaria de acessar os atributos desse bean em uma JSP que possuo ${meuBean.atributo01} por exemplo. Porém não está funcionando não dá erro mas não aparece nada, estou com algum conceito errado? Para acessar valores na JSP sempre tenho que inserir os objetos no objeto Result do VRaptor?
Olá IAX. Tu tens que chamar os métodos do bean pela classe MeuBeanController, no bean tu usa o return, e no Controller tu usas o return ou resul. E o jsp deve ficar dentro de uma pasta com o mesmo nome do bean, dentro da pasta jsp, dentro da pasta WEB-INF.
Primeiramente obrigado pela ajuda, mas acho que não fui muito claro. O funcionamento básico do VRaptor está bem claro pra mim, a dúvida é, preciso de algumas informações que não estão dentro do Controller da página, no caso está em um Componente do VRaptor, seria possível nessa JSP eu buscar essas informações ou não? Caso não, seria pq eu tenho sempre que utilizar o atributo Result do VRaptor para retornar valores para a página?
IAX, dá pra acessar o componente sessionScoped diretamente do JSP sim, desde que vc esteja usando o Spring ou o Guice, e o componente já esteja carregado…
se existe:
@Component
@SessionScoped
class MeuBean {
private String teste = "Abc";
public String getTeste() {
return teste;
}
}
se vc usar ${meuBean.teste} teoricamente funciona na JSP. Mas o componente precisa já ter sido usado em algum lugar.
É exatamente o que estou fazendo, com exceção de que o bean não é invocado em momento algum a não ser na JSP em questão, vou tentar invocá-lo antes assim como vc me sugeriu obrigado!
Fiz como sugeriu e não funcionou, na verdade o que estou achando estranho que é que nas duas abordagens os métodos simplesmente não são invocados pela JSP.
@Component
@SessionScoped
public class LoggedUserUtils implements Serializable {
private static final long serialVersionUID = 1L;
private User user;
@Autowired
private UserDAO userDAO;
@PostConstruct
public void init(){
if(this.user == null){
Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if(principal != null && !"".equals(principal)){
user = userDAO.findEntityById((String) principal);
}
}
}
public User getUser(){
return user;
}
public void setUser(User user) {
this.user = user;
}
}