<%
Integer numero = (Integer) request.getAttribute("teste");
Teste t = new Teste();
List<tes> lista = new ArrayList<tes>();
lista = t.getLista(numero);
%>
Servlet:
public class Servlet extends HttpServlet {
private Integer numero;
protected void service(HttpServletRequest request,
HttpServletResponse response) {
request.setAttribute("outroteste", null);
if (request.getAttribute("teste") == null) {
numero = 10;
} else {
numero = Integer.parseInt(request.getAttribute("teste").toString()) + 10;
}
request.setAttribute("teste", numero);
try {
request.getRequestDispatcher("teste.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
A página teste.jsp tem uma váriavel chamada numero. Ela faz uma consulta baseada na variavel numero e depois ele coloca na página. A função dessa váriavel é o de limitar o tamanho do resultado E quais resultados buscar. Mas até aqui isso não importa.
Na página JSP tem um botão chamado “próximo”, que ao ser clicado chama a Servlet acima. A servlet tem um If que verifica se o atributo “teste” é nulo (para evitar o NullPointerException) ele atribui o Integer número como sendo 10 (e caso ele não seja nulo, significa que ele já foi usado ao menos uma vez portanto não dará mais o NullPointerException, sendo assim, é só incrementar a váriavel numero com 10) e após isso ele chama o request.setAttribute(“teste”, numero);, fazendo com que o valor do atributo “teste” seja o valor anterior dele mais 10 (caso o If falhe).
O problema é que, ele nunca chega no bloco else. Quando eu clico no botão “próximo” pela segunda vez, ele cai novamente no bloco if, ou seja, ele entende que o atributo “teste” continua nulo.
Alguém pode me dizer o que estou fazendo de errado?
Infelizmente não consigo ver o seu problema com esse pedaço de código… =/
Se você quiser fazer um novo projeto de teste… com dados fictícios e mostrar aqui ou enviar para o meu e-mail… eu posso até te ajudar… O erro pode até estar em outras instâncias… ou algo do tipo… talvez algum nerd possa te ajudar amigo. =/
if (request.getAttribute("teste") == null) {
numero = 10;
} else if (request.getAttribute("teste") != null){
numero = Integer.parseInt(request.getAttribute("teste").toString()) + 10;
}
if (request.getAttribute("teste") == null) {
numero = 10;
} else if (request.getAttribute("teste") != null){
numero = Integer.parseInt(request.getAttribute("teste").toString()) + 10;
}
Abraço![/quote]
Opa, obrigado pela resposta.
Essa alternativa não funcionaria pois a minha página funciona assim:
jsp>>servlet>>jsp>servlet>>jsp…etc
Na primeira vez que ele chama a servlet o atributo “teste” vai ser nulo portanto ele cai no primeiro if e atribui a variavel numero como sendo 10. Na segunda vez ela já não é mais nula (ou não deveria ser) portanto cairia no else.
Nessa sua alternativa, ele nunca cai no bloco else porquele ele sempre chega na servlet como sendo nulo.
Mas eu ainda não testei porque do nada o eclipse está lançando a excessão “ClassNotFoundException”
O problema é que vc está colocando a variável no escopo de request,portanto numa nova requisição(ao clicar o botão “Próximo”)essa objeto não está mais na requisição.
Experimente colocar a variável teste em escopo session .
O problema é que vc está colocando a variável no escopo de request,portanto numa nova requisição(ao clicar o botão “Próximo”)essa objeto não está mais na requisição.
Experimente colocar a variável teste em escopo session .[/quote]