Можно ли использовать usebean в JSP? - PullRequest
0 голосов
/ 09 ноября 2011

У меня есть приложение, которое позволяет пользователю выполнять поиск.

На основании введенных критериев поиска выполняется служебный вызов функции DAO (событие шаблона jsp -> перехватчики -> процессоры -> службы -> DAO -> база данных) и возвращается список результатов, который получаетотображается в myView.jsp

Код, как показано ниже, используется для чтения данных TO в JSP:

<jsp:usebean id="myTO" type="com.myPackage.MyTO" scope="session"/>

и в теле что-то вроде

<%= myTo.getSomething() =%>

Каждый элементв списке кликабельно для деталей.Таким образом, при щелчке элемента 2 в списке будет сделан еще один вызов с идентификатором элемента 2, чтобы получить более подробную информацию о элементе 2.

В зависимости от типа элемента детали выбираются в разных TO.например, Type1TO, Type2TO.

Таким образом, подробные данные об элементе возвращаются в одном таком TO.

Проблема: я показываю детали в той же JSP.Таким образом, returnURL второго запроса перенаправляется в myView.JSP

. Поэтому я поместил строку наподобие

<jsp:usebean id="type1TO" type="com.myPackage.Type1TO" scope="session"/>

Однако, это дает ошибку при первом вызове поиска по списку, когда выше Type1TO делаетеще не существует.Ошибка - что-то вроде «невозможно найти type1TO в сеансе области действия»

Как я могу решить эту проблему ???

Есть ли способ поместить тег jsp: usebean в условие if вместо, где оно должно быть использовано в организме ??Или любое другое решение этой проблемы?

Я новичок в JSP и имею дело с устаревшей JSP.Так что очень продвинутый JSP (сложный EL) может оказаться невозможным.

Ответы [ 2 ]

0 голосов
/ 09 ноября 2011

Если перевести на сервлет, ваш первый фрагмент кода будет выглядеть так:

getAttribute("myTO");

Использование одного атрибута или «нескольких атрибутов с логикой if-else» зависит от вашего конкретного случая. Не понимая вашей конкретной ситуации, я вижу следующие варианты:

Вариант 1 Где бы вы ни устанавливали атрибут myTO, убедитесь, что вы устанавливаете значение в одну и ту же переменную, чтобы вам не приходилось использовать логику if-else в jsp.

Вариант 2 Используйте скрипты

<%
  com.myPackage.MyTO toObject = session.getAttribute("myTo");
  if (toObject == NULL) {
      toObject = session.getAttrbute("type1TO");
  }
%>
0 голосов
/ 09 ноября 2011

Ниже приведены примеры использования <usebean>:

  1. <jsp:useBean id=”connection” class=”com.myco.myapp.Connection” />. В этом примере бин с идентификатором становится доступным либо путем создания, либо поиска существующего в сеансе
  2. <jsp:useBean id=”connection” class=”com.myco.myapp.Connection”> <jsp:setProperty name=”connection” property=”timeout” value=”33”> </jsp:useBean>. В этом примере bean-компонент создается или обнаруживается и устанавливается с помощью setProperty, если он создается.
  3. <jsp:useBean id=”wombat” type=”my.WombatType” scope=”session”/>. В этом примере существующий компонент найден и доступен для данного типа.
...