olá…
estou tentando aprender struts… e ando tendo alguns problemas…
segui alguns tutoriais… e não consigo resolver um problema…
segue abaixo meu listUsers.jsp
ele verifica isso, pq logo abaixo no seu jsp, existe uma taglib logic:iterate,
que ira executar um loop usando o bean userListBean, que alias é uma collection.
Esta collection, pelo seu codigo, parece estar populada com objetos user.
Bom dia,
Eu estou fazendo o mesmo exemplo e estava com os mesmo problemas. As respostas daqui me ajudaram muito, mas eu não entendi como ficaria meu código para que não ficasse aparecendo a página de erro sempre.
Alguém poderia me ajudar?
Desculpem o flooder, mas estou com o projeto parado nisso e preciso muito terminar…
Alguém me mostra o caminho para que eu consiga terminar isso.
Já tentei fazer o set da session no jsp, mas acho que fica errado isso. Porque ele não está lendo a session, devo fazer imports das classes, ou criar objetos do tipo para que ele faça o set session?
Está igual o do t0th, antes tinha o mesmo erro, mas como vc falou eu coloquei as declarações de global-forward. Agora vai direto pra página de erro como ele citou.
Você disse que faltava o objeto na sessão, e ele mostrou como está o Action. Meu código está igual o dele. Mas eu não entendi como resolver o problema.
qdo vc passa um objeto para a pagina, vc pode optar em passar pelo request ou pela sessão, dependendo da sua necessidade. Ao passar o objeto vc tambem precisa passar uma identificação para o objeto
Entendi.
Mas se isso está sendo setado no Action (como o t0th colocou sobre o arquivo listUsersAction.java) , por que ele não encontra a variável na sessão?
Em qual momento ele irá executar o action?
a taglib logic:notPresent utiliza o metodo findAttribute da classe PageContext caso o atributto scope não for fornecido e o metodo getAttribute caso o atributo scope for fornrcido a taglib.
[Editado]
So pra constar…
Olhem o resumo do fluxo de execução da taglib logic:notPresent
Classe: NotPresentTag
// Estende PresentTag
public class NotPresentTag extends PresentTag
//Metodo que executa a condição
protected boolean condition() throws JspException {
return (condition(false));
}
Classe: PresentTag
//Declaração da Classe
public class PresentTag extends ConditionalTagBase {..}
//Metodo que executa a condição
protected boolean condition(boolean desired) throws JspException {
....
//Caso o name da taglib seja informado, o metodo isBeanPresent é excutado
...
} else if (name != null) {
present = this.isBeanPresent();
}
.....
// Metodo isBeanPresent
// Caso apenas o name seja informado o else será executado, chamando o metodo lookup da classe TagUtils
protected boolean isBeanPresent() {
Object value = null;
try {
if (this.property != null) {
value = TagUtils.getInstance().lookup(pageContext, name, this.property, scope);
} else {
value = TagUtils.getInstance().lookup(pageContext, name, scope);
}
} catch (JspException e) {
value = null;
}
return (value != null);
}
Classe: TagUtils
// Metodo que verifica se o objeto existe no contexto da app
// Utiliza os metodos da classe pageContext
public Object lookup(PageContext pageContext, String name, String scopeName)
throws JspException {
if (scopeName == null) {
return pageContext.findAttribute(name);
}
try {
return pageContext.getAttribute(name, instance.getScope(scopeName));
} catch (JspException e) {
saveException(pageContext, e);
throw e;
}
}