JSP Bean работает только когда я меняю - PullRequest
0 голосов
/ 07 июля 2011

У меня странная проблема, или я считаю, что это странно. Прежде всего, это коды:

public class Bean implements Serializable {
    private String adSoyad;

    public void setAdSoyad (String adSoyad) {
        this.adSoyad = adSoyad;
    }

    public String getAdSoyad () {
        return adSoyad;
    }
}

мое использованиеBean:

<jsp:useBean id="isimBean" class="Bean" scope="session">
     <jsp:setProperty name="isimBean" property="adSoyad" value="<%=adsoyad%>" />
</jsp:useBean>

За исключением Бина, я контролирую сеанс и вход в систему

Я храню информацию, которая приходит из формы, как эта

На странице, которая заботится о форме, есть метод beAd's getAdSoday.

Когда я проверяю форму, метод getAdsoyad дает мне ноль.

Но я что-то изменяю в классе Бина и сохраняю его, и когда я перезагружаю страницу (я нажимаю только клавишу f5, я не вводю новые данные), getAdsoyad дает мне результат.

Я перезаполняю форму без изменений, она не работает, но когда я что-то меняю, она работает.

Под изменением чего-либо я подразумеваю, что я делаю буквы заглавными и т. Д. Или меняю переменные get и set в именах методов.

В общем, кажется, что это работает только при компиляции bean.java.

В чем может быть проблема?

Кроме того, с помощью имен методов get и set какие различия в свойстве useBean допускаются? если свойство aa, будет ли проблемой то, что метод set является setAA?

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

Редактировать:

Я думаю, мой код не является неправильным. Насколько мне известно, бин сохраняет информацию, которую я отправил. Я отправил только информацию об имени и фамилии (name = ad, Soyad = фамилия, adSoyad и nameSurname совпадают)

Моя проблема в том, что bean-компонент не сохраняет переменную nameSurname. Но когда я изменяю одну строку bean.java, bean работает правильно. Затем я закрыл страницу и открыл, что bean больше не работает. Но я изменил nameSurname на NameSurname, бин работает правильно! Я думаю, что bean-класс работает только при перекомпиляции.

1 Ответ

0 голосов
/ 25 февраля 2012

Прежде всего, ваш вопрос неясен, и если вы нашли решение для вашей проблемы, вы должны опубликовать это как ответ и принять его.

Напомним, что вот некоторая информация:

В спецификации JSP 2.2 на страницах 96 и 97 указано, что

(шаг 6) Если объект не найден в указанной области, и указанный класс называет неабстрактный класс, который определяет открытый конструктор без аргументов, то экземпляр класса создается. Ссылка на новый объект связана с переменной сценария и с указанным именем в указанной области, используя соответствующий механизм ассоциации, зависящий от области (см. PageContext). После этого выполняется шаг 8. ..

(Шаг 8) Если у действия jsp: useBean непустое тело, оно обрабатывается. Переменная инициализируется и доступна в области видимости тела. Текст тела трактуется как и везде. Любой текст шаблона будет передан в исходящий поток. Скриплеты и теги действий будут оценены. Обычно используется непустое тело для завершения инициализации созданного экземпляра. В этом случае тело, скорее всего, будет содержать действия jsp: setProperty и скриптлеты, которые оцениваются. Это завершает обработку этого действия useBean.

Это говорит нам, что , если НЕТ экземпляров класса Bean, тег useBean создаст для вас экземпляр Bean и выполнит внутренний тег setProperty для установки Ваша собственность до некоторой стоимости.

Ваша первая проблема в том, что в используемом классе Bean отсутствует конструктор без аргументов, таким образом, не соответствует стандартам JavaBean.

...