Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> jstl - как сделать обновление предыдущей страницы 
:(
    Опции темы
SirGamlet
Дата 31.8.2010, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 19.7.2010

Репутация: нет
Всего: нет



Добрый день! Суть проблемы: есть база данных, записи из которой я вывожу при помощи jstl. При этом у каждой записи есть свой чекбокс, в котором если поставить галочку, то следующая страница удалит указанную запись. Указанная запись из базы действительно удаляется. Но если потом снова вывести записи из бд, то и удаленная запись тоже выведется, что наталкивает меня на мысль о том, что надо бы как-то бин для страницы как-то обновить, или пересоздать, чтобы использовался новый уже. Подскажите, как это можно реализовать, а то я в jstl еще пока не особо)

Это сообщение отредактировал(а) SirGamlet - 31.8.2010, 15:57
PM MAIL   Вверх
kkorsakoff
Дата 31.8.2010, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 6
Всего: 14



А F5 или Ctrl+F5 (в зависимости от браузера) помогает?
PM MAIL WWW ICQ   Вверх
dobrolub
Дата 31.8.2010, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 4
Всего: 16



проверь объекты на предмет кэширования данных,  в первую очередь тот, что поставляет данные для jstl итератора.

сделай ему scope - page (не session, не application)



PM   Вверх
SirGamlet
Дата 31.8.2010, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 19.7.2010

Репутация: нет
Всего: нет



kkorsakoff, не помогает, конечно! Я ж не ламер полный.
dobrolub, в первую очередь сам подумал про page, не спасло.
PM MAIL   Вверх
dobrolub
Дата 31.8.2010, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 4
Всего: 16



Transaction Isolation Level не RepeatableRead? 

возможно лучше запостить и код тоже.
PM   Вверх
SirGamlet
Дата 1.9.2010, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 19.7.2010

Репутация: нет
Всего: нет



dobrolub, вот код страницы, где надо чтобы была показано обновленная информация:
Код

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@page import="testtask.*"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <base href="<%=basePath%>">

        <title>Test Task</title>

        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

    </head>

    <body>

        <script type="text/javascript">
function redir() {
    window.location.href = 'ManageList.jsp'
}
</script>

        [
        <a href="ManageList.jsp">Manage List</a> ] [
        <a href="PerformTest.jsp">Perform Test</a> ]
        <hr>

        <jsp:useBean id="EditQuestionB" class="testtask.EditQuestionBean" scope="page" />
        <c:set var="QuestName" value="${EditQuestionB.question}" />
        <c:set var="answs" value="${EditQuestionB.answers}" />
        <form name="SaveQuestionForm" action="SavingQuestion.jsp"
            method="post">
            Question:
            <input type="text" name="text3"
                value="<c:out value="${QuestName.questionName}" />" maxlength="50"
                size="50" />

            <table width="100%" border="1">
                <tr>
                    <td>
                        <b>Answer</b>
                    </td>
                    <td>
                        <b>Correct</b>
                    </td>
                    <td>
                        <b>Delete<b></b>
                    </td>
                </tr>
                <tr>
                    <c:forEach var="answer" items="${answs}">
                        <td>
                            <c:out value="${answer.answerName}" />
                        </td>
                        <td>
                            <input type="radio" name="radio1"
                                <c:if test="${answer.isCorrect eq true}">
<c:out value="checked=checked"/>
</c:if>
                                value="Correct<c:out value="${answer.answerId}" />" />
                        </td>
                        <td>
                            <input type="checkbox" name="checkbox1"
                                value="Delete<c:out value="${answer.answerId}" />" />
                        </td>
                </tr>
                <tr>
                    <td></td>
                </tr>

                </c:forEach>
            </table>

            <a href="AddAnswer.jsp">Add answer</a>
            <br>

            <input type="Submit" name="SaveBtn" value="Save" />
            <input type="Button" name="Cancel" value="Cancel" onclick="redir()" />
        </form>

        <script type="text/javascript">
function redir() {
    window.location.href = 'ManageList.jsp'
}
</script>

    </body>
</html>




Вот бин, который она использует, EditQuestionBean:
Код

package testtask;

import java.util.Arrays;
import java.util.List;

public class EditQuestionBean {
    
    QuestionDAO dao = new QuestionDAO();
    
    public Question getQuestion() {
        return dao.findById(EditQuestionHelper.getId());
        
    }
    
    public List getAnswers() {
        return Arrays.asList(dao.findById(EditQuestionHelper.getId()).getAnswers().toArray());
    }

}



А вот код страницы для action-формы, SavingQuestion.jsp:
Код

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@page import="testtask.*"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://"
            + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <base href="<%=basePath%>">

        <title>Test Task</title>

        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="This is my page">
        <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

    </head>

    <body>
        <%
            Map map = request.getParameterMap();
            AnswerDAO adao = new AnswerDAO();
            QuestionDAO dao = new QuestionDAO();
            Answer answer = null;
            Question question = null;
            Set<Answer> answers = null;
            int simpleCounter = 0;
            int CountAnswers = 0;
            Answer FirstAnswer = null;
            Iterator it = map.entrySet().iterator();

            Set<Answer> falseAnswers = dao.findById(EditQuestionHelper.getId()).getAnswers();
            Iterator<Answer> falseIt = falseAnswers.iterator();
            
            Set<Answer> answersq = dao.findById(EditQuestionHelper.getId())
                    .getAnswers();
            Object[] arrObj = answersq.toArray();
            

            while (falseIt.hasNext()) {
                Answer answ = falseIt.next();                
                    answ.setIsCorrect(false);
                    adao.save(answ);
                }
            while (it.hasNext()) {
                Map.Entry me = (Map.Entry) it.next();
                String str = me.getKey().toString();
                String[] arr = (String[]) me.getValue();

                for (int i = 0; i < arr.length; i++) {
                    if (arr[i].contains("Delete")) {
                        answer = adao.findById(new Long(arr[i].substring(6)));
                        if (answer.getIsCorrect()==true) {
                        ((Answer)arrObj[0]).setIsCorrect(true);
                        adao.save((Answer)arrObj[0]);
                        }
                        
                        adao.delete(answer);

                    }

                    if (arr[i].contains("Correct")) {
                        answer = adao.findById(new Long(arr[i].substring(7)));
                        answer.setIsCorrect(true);
                        adao.save(answer);
                    }
                    
                    

            }
            }

        

            Iterator<Answer> iter = answersq.iterator();
            
        %>
    </body>
</html>



PM MAIL   Вверх
dobrolub
Дата 1.9.2010, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 385
Регистрация: 18.12.2009
Где: Vancouver, Canada

Репутация: 4
Всего: 16



код выглядит нормальным - я ничего увидел плохого. добавь System.out.println() в код где берутся данные и посмотри, что там приходит из базы данных через Дао.

какой transaction isolation level кстати?

Это сообщение отредактировал(а) dobrolub - 1.9.2010, 19:29
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.