Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.120.16] |
|
Сообщ.
#1
,
|
|
|
Есть вот такая jsp:
<jsp:useBean id="pics" class="Pics" scope="session" type="Pics" /> <head> <link rel="stylesheet" type="text/css" href="style.css"> <!-- <meta http-equiv="refresh" content="5"> --> </head> <html> <body> <% if(pics.getNext()){ pics.nextIndex(); %> <img src="<%=pics.nextPic()%>" alt="pic" /> <h1><%=pics.nextPic()%> </h1> <% }else{ pics.backIndex(); %> <img src="<%=pics.nextPic()%>" alt="pic" /> <h1><%=pics.nextPic()%> </h1> <% } %> <form action="asd.jsp" > <input type="submit" id="back" value="Back" onclick="<% pics.setNext(false); %>"/> </form> <form action="asd.jsp" > <input type="submit" id="next" value="Next" onclick="<% pics.setNext(true); %>"/> </form> </body> </html> И вот такой класс, который просто вычитывает находящиеся файлы в папке и отдает потом путь: public class Pics { private final String PATH="webapps/jsproot/pic"; File [] listOfPics; int index; boolean next=true; public Pics(){ listOfPics=new File(PATH).listFiles(); } public String nextPic(){ if(listOfPics!=null){ return "pic/"+listOfPics[index].getName(); } else return ""; } public void nextIndex(){ index=(index+1)% listOfPics.length; } public void backIndex(){ index=(index-1)% listOfPics.length; } public void setNext(boolean _next){ next=_next; } public boolean getNext(){ return next; } } Почему при клике на кнопку "Back" или "Next" boolean next в классе Pics не изменяется? (я проверил) В результате абсолютно все равно, на какую кнопку кликать - всегда картинки меняются по возрастающему индексу index... Может, я в ПРИНЦИПЕ неправильно делаю? Я только начал изучать jsp, поэтому извините, если примитив.. |
Сообщ.
#2
,
|
|
|
Цитата Большой Синий Кит @ Почему при клике на кнопку "Back" или "Next" boolean next в классе Pics не изменяется? (я проверил) Потому что в обработчике onclick может быть только клиентский javascript, а никак не java-код. Это же html. |
Сообщ.
#3
,
|
|
|
Цитата wind @ Цитата Большой Синий Кит @ Почему при клике на кнопку "Back" или "Next" boolean next в классе Pics не изменяется? (я проверил) Потому что в обработчике onclick может быть только клиентский javascript, а никак не java-код. Это же html. Спасибо! Не знал этого... Вы не подскажете тогда, как такого рода дело провернуть в jsp - словить событие нажатия кнопки (без javaScript)? |
Сообщ.
#4
,
|
|
|
Вот, почитайте: JSP Tutorial - Beans and Form processing
|
Сообщ.
#5
,
|
|
|
Спасибо! Сделал вот так: <?xml version="1.0" ?> <jsp:useBean id="pics" class="ua.dp.apple.Pics" scope="session" type="ua.dp.apple.Pics" /> <head> <link rel="stylesheet" type="text/css" href="style.css"> <!-- <meta http-equiv="refresh" content="5"> --> </head> <html> <body> <% if(request.getParameter("valueOf")!=null){ String result = request.getParameter("valueOf"); if(result.equals("next")){ pics.nextIndex();} else{ pics.backIndex(); } } %> <img src="<%=pics.nextPic()%>" alt="pic" /> <h1><%=pics.nextPic()%> </h1> <form name="method1" method="POST"> <INPUT type="hidden" name="valueOf" value="next"> <input type="button" id="back" value="Back" onclick="backPic()"/> <input type="button" id="next" value="Next" onclick="nextPic()" /> </form> <SCRIPT LANGUAGE="JavaScript"> <!-- function nextPic() { document.method1.valueOf.value = "next" method1.submit() } function backPic() { document.method1.valueOf.value = "back" method1.submit() } // --> </SCRIPT> </form> </body> </html> |