Как зациклить значение, хранящееся в сессии? - PullRequest
1 голос
/ 25 января 2011

Извините, что прерываю всех вас.

У меня есть вопрос о сеансе.

В моем случае мне нужно проверить, сохранено ли значение сеанса.

Если сеанс не нулевой, я хочу зациклить значение, чтобы сделать сравнение.

Теперь я использую только оператор if, чтобы проверить последнюю запись идентификатора книги, повторяется или нет.

Но я не знаю, как использовать цикл для проверки наличия какого-либо повторяющегося или нет идентификатора книги.

Кто-нибудь может дать мне какой-нибудь совет для достижения этой цели?

Большое спасибо.

вот мой исходный код:

<%@ page contentType="text/html; charset=Big5"%>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import ="javax.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.lang.*"%>


    <%!
    public class BookInfo {

        private String id;
        private String name;
        private int count;

        public BookInfo(String id, String name, int count) {
            this.id = id;
            this.name = name;
            this.count = count;
        }

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getCount() {
            return count;
        }

        public void setCount(int count) {
            this.count = count;
        }

        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            BookInfo other = (BookInfo) obj;
            if (id == null) {
                if (other.id != null)
                    return false;
            } else if (!id.equals(other.id))
                return false;
            return true;
        }

        public String toString()
        {
            return " ISBN is " + getId() + " , book title is " + getName() + " & order no. is " + getCount() + "\n";
        }   
    }
    %>

    <%
        try {
            List MyCart = (List) request.getSession().getAttribute("MyCart");
            if (MyCart == null) {
                MyCart = new ArrayList();
            }

            BookInfo book = new BookInfo("2", "C++ langauge", 1);
            //BookInfo book = new BookInfo("2", "java", 1);


            if (!MyCart.contains(book)) {
                MyCart.add(book);

            } else {

                //how to loop the value stored in session?

                BookInfo tmpBook = (BookInfo) MyCart.get(MyCart.indexOf(book));
                tmpBook.setCount(tmpBook.getCount() + book.getCount());



            }

            request.getSession().setAttribute("MyCart", MyCart);


            System.out.println(MyCart);

        }
        catch ( Exception main_error ) {
            System.out.println("%%%%%%%%%%%"+main_error);
        }
    %>

1 Ответ

1 голос
/ 02 марта 2011

Вы не должны писать код Java, особенно создавать классы внутри JSP. Это очень плохая практика кодирования - попробуйте извлечь ваш код в реальные файлы Java.

Но чтобы ответить на ваш вопрос: вы должны увидеть, что объект List является итеративным, поэтому вы можете проходить по нему с помощью

for(BookInfo aBook: MyCart){
    //code to look at each BookInfo object here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...