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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> instanceof в jsf. возможно ли? Определение типа возращаемых объектов 
:(
    Опции темы
Bandit
  Дата 6.10.2009, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброго времени суток форумчанам.

Есть наивный вопрос... можно ли на странице jsf(jsp) каким-либо образом определять тип возвращаемого объекта? 

Например: у меня есть list с объектами одного родительского класса. я его итерирую.

Код

                                            <a4j:repeat id="rep" value="#{row.atomicValues}" var="aVal">
                                                    <h:outputText value="#{aVal.value}"/>
                                            </a4j:repeat>

есть ли возможность определить тип объекта aVal и повлиять на логику обработки?
PM MAIL   Вверх
ivanovpv
Дата 6.10.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


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

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



Конечно можно.  Все равно твой "aVal" - это некий атрибут, только надо понять какого он контекста (скорее всего страничного контекста)

Попробуй иньекцию типа:
Код

<%
Object obj=pageContext.findAttribute("aVal");
if(obj instanceof java.lang.String)
{
       //blah-blah
}
%>



--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
Bandit
  Дата 6.10.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А кроме иньекции java кода какие-нибудь возможности имеются? А то MVC побоку пойдет smile
PM MAIL   Вверх
magicfly
Дата 6.10.2009, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



про jsp:
ну как минимум можно сделать это в скриплет тегах. Вполне возможно что для этого можно написать кастом тегю

Upd:
тогда точно сustom tag

Это сообщение отредактировал(а) magicfly - 6.10.2009, 15:37
PM MAIL   Вверх
ivanovpv
Дата 6.10.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


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

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



Цитата(Bandit @  6.10.2009,  15:29 Найти цитируемый пост)
А то MVC побоку пойдет


Лет 10 назад я также заморачивался такими священными темами, а потом понял что все это от лукавого. Основные критериями которыми надо реально заморачиваться, это:
а) Щастье клиента
б) Расширяемость кода
в) Документация

MVC - в этом списке проходит как подпунктик пункта б) - причем его вклад в этот пунктик наверное не более 1/3

Так что смело инжектируй. А иначе изобретай себе новые кастом теги, которые проверяет типы (а оно надо?  smile )


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
Bandit
Дата 6.10.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



 smile 
PM MAIL   Вверх
Bandit
  Дата 12.10.2009, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Решил последовать данному совету... 
Сразу вывалился:

java.lang.NullPointerException
        at jsp_servlet.__manual_record_details._jspService(__manual_record_details.java:371)
        at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
        Truncated. see log file for complete stacktrace


Код


...............
                              <a4j:repeat id="repValRow" value="#{rowDataList.atomicValueList}" var="rowDataUtils">
                                        <f:verbatim>
                                            <td id="tdRecordVal" style="text-align:left;">
                                        </f:verbatim>
                                                <h:outputText value="#{rowDataUtils.valueAtomicObject}"/>
                                                <h:outputText value=", " rendered="#{rowDataList.multi}"/>


                                                <%
                                                
                                                Object objServCont = pageContext.getServletContext().getAttribute("rowDataUtils");
                                                Object obj1= pageContext.findAttribute("rowDataUtils");
                                                Object obj2= session.getAttribute("rowDataUtils");
                                                Object obj3= application.getAttribute("rowDataUtils");
                                                Object obj4= request.getAttribute("rowDataUtils");
  
                                                if(objServCont == null){
                                                    System.out.println("objServCont ########################");
                                                }

                                                if(obj == null){
                                                    System.out.println("obj1########################");
                                                }
                                                if(obj2 == null){
                                                    System.out.println("obj2#######################");
                                                }
                                                if(obj3 == null){
                                                    System.out.println("obj3########################");
                                                }
                                                if(obj4 == null){
                                                    System.out.println("obj4#######################");
                                                }



                                                RowDataUtils rowDataUtils = (RowDataUtils)obj;
                                                if(rowDataUtils.getAtomicValue() instanceof LinkRow){
                                                    LinkRow linkRow = (LinkRow) rowDataUtils.getAtomicValue();
                                                    pageContext.setAttribute("linkRow",linkRow);
                                                    %>
                                                    <h:commandLink action="#{manualManager.selectRecord}" immediate="true">
                                                        <f:param name="idRecordParam" value="#{linkRow.rowId}"/>
                                                        <h:outputText value="#{linkRow.name}"/>
                                                    </h:commandLink>
                                                    <%
                                                }
                                                %>


                                        <f:verbatim>
                                            </td>
                                        </f:verbatim>
                                    </a4j:repeat>
................


проблема заключается в том, что NULL получается всюду... что я делаю не так? как мне закинуть rowDataUtils в pageContext? 
страшно замучался... дайте совет... в pageContext может содержать в себе любой объет возвращаемый методом rowDataUtils.getAtomicValue()  и в зависимости от него мне надо выводить: текст, ссылку, номер... 

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

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

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


 




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


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

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