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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение ApplicationModule 
:(
    Опции темы
Vofka
Дата 23.10.2006, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть необходимость получения ApplicationModule в скриплете на jsp страницеюнашел вот такой вот способ:


Код

        ApplicationModule am =ctx.getBindingContainer().getDataControl().getApplicationModule();
        ViewObject vo = am.findViewObject("newobj1");
        vo.setWhereClause("Hduser.U_ID="+2);
        vo.executeQuery();   

я так понял что ctx это ничто иное как DataActionContext ctx.Так вот вопрос в следующем как на jsp cnhfybwt gjkexbnm этот ctx либо подскажите какой нибудь другой способ получения ApplicationModule.

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


Новичок



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

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



Изучаю технологию недавно.
Тема для меня тоже интересна.

Когда-то долго мучилась со способом, указанным выше, но что-то не получилось.


Возможно, не самый правильный способ, найденный в результате долгих поисков.

Если что, кто сталкивался с аналогичной проблемой исправьте, пожалуйста!

Использую Struts. А у Вас используется Struts в приложении?
Из вопроса не очень понятно: ограничения на другие способы получения ApplicationModule
(Не знаю, подойдет ли под Вашу задачу, т.к. по идее, если используется Struts, и можно на action вызвать метод из AppModuleImpl, передав параметрами необходимые переменные. А в самом методе уже искать и привязывать ViewObject)

Но думаю нижеописаный метод можно переработать и напрямую в jsp страницу внедрить, в крайнем случае.



Код

public class EditBeanAction extends DispatchAction {    
      private static final String appId = "testAppId";
      private static final String configName = "model.AppModuleLocal";
     //...
    public ActionForward Save(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception  {
      ApplicationModuleRef appModRef = SessionUtil.getAmRefFromRequest(request, appId, configName);
      ApplicationModule am = appModRef.useApplicationModule();

      //ApplicationModuleImpl im = (ApplicationModuleImpl)am;
       AppModuleImpl myApp =  (AppModuleImpl) am; 
       //здесь найти вьюхи и установить параметры запроса
     }
}


Код

import oracle.jbo.ApplicationModule;
import oracle.jbo.JboException;
import oracle.jbo.common.ampool.PoolMgr;
import oracle.jbo.common.ampool.ApplicationPool;
import oracle.jbo.common.ampool.ApplicationModuleRef;
import oracle.jbo.common.ampool.SessionCookieFactory;
import oracle.jbo.common.ampool.SessionCookie;
import oracle.jbo.common.ampool.ConnectionStrategy;
import oracle.jbo.html.Res;
import oracle.jbo.http.HttpContainer;
import oracle.jbo.http.HttpSessionCookie;
import oracle.jbo.http.HttpSessionCookieFactory;
import oracle.jbo.http.HttpUtil;
import oracle.jbo.common.PropertyConstants;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
import oracle.jbo.html.jsp.datatags.*; // included only to grab error message functionality. - the Res class

import java.util.*;

public class SessionUtil {

public static ApplicationModuleRef getAmRefFromRequest(HttpServletRequest inRequest,
String inAppId,
String inConfigName) { 

initialize(inRequest, inAppId, inConfigName);
HttpContainer container = HttpContainer.getInstanceFromSession(inRequest.getSession());
ApplicationModuleRef amRef = (ApplicationModuleRef) container.getSessionCookie(inAppId);
if (amRef == null) {
throw new JboException(Res.format(Res.COOKIE_NOT_FOUND, inAppId));
}
return amRef;
}

public static void initialize(HttpServletRequest request,
String appId,
String configName) { 

int index = configName.lastIndexOf('.');
String configPackage = configName.substring(0, index);
String configSection = configName.substring(index + 1);

// This instantiates an HttpContainer, and attaches the request app mod cookie to the
// container.
SessionCookie cookie = findSessionCookie(request, 
request.getSession(true), 
appId,
configPackage, 
configSection);

ApplicationModule am = cookie.useApplicationModule(); //no lock

Locale locale = HttpUtil.determineLocale(request);

// setup the Application Module's Locale based on the incoming request information
if(locale != null)
am.getSession().setLocale(locale);

// keep id for passivation purposes. This inserts a record into the PS_TXN table.
cookie.reservePassivationId();

} // initialize

protected static SessionCookie findSessionCookie(HttpServletRequest request
, HttpSession session
, String applicationId
, String configPackage
, String configName) {

// Load the pool creation properties with the name of our custom
// application pool class.
Properties cookieProps = new Properties();
cookieProps.put(HttpSessionCookieFactory.HTTP_SERVLET_REQUEST, request);

// Specify property values to be used by the application pool. Please note
// that these property values could also have been specified in the 
// application configuration file.
Properties poolProps = new Properties();


// This action instantiates an HttpContainer.
SessionCookie cookie = HttpContainer.findSessionCookie(
session, applicationId, configName // poolName
, configPackage, configName, poolProps, cookieProps);
return cookie;
} 

}


PM MAIL   Вверх
Vofka
Дата 23.10.2006, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Да стратс используется.Но все таки хотелось бы разобраться с описанным выше способом когда апликейшен модуль вытаскивается из контекста.Кстати нашел еще один способ но он тоже собака не работает.вернее работает но не до конца.

Код

      BindingContext bindCtx = new BindingContext();       
      JUMetaObjectManager mgr = null;
      JUMetaObjectManager.setErrorHandler(new JUErrorHandlerDlg());
      mgr = JUMetaObjectManager.getJUMom();
      mgr.setJClientDefFactory(null);
      HashMap map = new HashMap(4);
      map.put(DataControlFactory.APP_PARAMS_BINDING_CONTEXT, bindCtx);
      mgr.loadCpx("oracle.help.view.DataBindings.cpx", map); 
      JUPanelBinding panelBinding = new JUPanelBinding("wherePageDef");
      panelBinding = panelBinding.setup(bindCtx, this);
      ApplicationModule am = panelBinding.getBindingContext().getDefaultDataControl().getApplicationModule();


getDefaultDataControl()-срабатывает вроде даже находит то что надо .getApplicationModule() возвращает null.
PM MAIL   Вверх
adf
Дата 24.10.2006, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Все та же знакомая конструкция:
Код

getBindingContext().getDefaultDataControl().getApplicationModule();

И, кстати, тоже возвращала null, когда я с ней аналогично мучалась.
-------------------------------------------------
Есть еще способ во всяких мануалах:
Код
<jbo:ApplicationModule id="commonAM" configname="gov.ga.gdc.common.appmodule.CommonAppModule.CommonAppModuleLocal" releasemode="Stateless" /> 
<% 
  CommonAppModuleImpl commonAMobj = (CommonAppModuleImpl)commonAM.useApplicationModule();
 ...

Тоже, впрочем, безуспешно.
------------------------------------------------

Единственный заработавший способ у меня - это который в предыдущем сообщении.
------------------------------------------------

И все-таки можно вопрос:
В чем же спецефичность проблемы, что нужно использовать только такой способ?

-------------------------------------------------
[Простите, это ничего, что я задаю вопросы, без конкретных советов? Мне тоже в этом интересно разобраться]



PM MAIL   Вверх
Nesmishlenish
Дата 24.10.2006, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Возможно это немножко не то что требуется однако думаю будет интересным.

        AppModule am = 
            (AppModule)bc.findDataControl(appModuleName).getDataProvider();
        am.setReturnFromAdminPage(retPageURL.toString());

где bc - это переменная класса (private DCBindingContainer bc;)
Суть сдесь в том что я из контроллера обращаюсь к методу написанному в AppModule и передаю ему переменную)

Добавлено @ 10:55 
Возможно это немножко не то что требуется однако думаю будет интересным.

        AppModule am = 
            (AppModule)bc.findDataControl(appModuleName).getDataProvider();
        am.setReturnFromAdminPage(retPageURL.toString());

где bc - это переменная класса (private DCBindingContainer bc;)
Суть сдесь в том что я из контроллера обращаюсь к методу написанному в AppModule и передаю ему переменную)
PM MAIL ICQ   Вверх
Vofka
Дата 24.10.2006, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Специфичность проблемы в том что у меня долбанутый начальник и ему хочется именно так. smile 
PM MAIL   Вверх
Vofka
Дата 24.10.2006, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Что то у меня не сработал твой метод( adf).То есть вернее он работает но почему то таблица созданная по вьюхе при разработке страницы jsp не обновляется.тоесть изначально на страницу я кидаю вьюху из датаконтрол,а потом уже на переходе на нее в action  пытаюсь поставить параметры в where.
PM MAIL   Вверх
adf
Дата 25.10.2006, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Покажи код Action`a
PM MAIL   Вверх
Vofka
Дата 25.10.2006, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



   String appId = "AppModule";
   String configName = "jsp.model.AppModuleLocal";
   ApplicationModuleRef appModRef = SessionUtil.getAmRefFromRequest(request, appId, configName);
   ApplicationModule am = appModRef.useApplicationModule();
   ViewObject vo = am.findViewObject("WhereObj1");
   vo.setNamedWhereClauseParam("rparam", 2);
   vo.executeQuery();   
   vo.first();
   System.out.println( vo.getCurrentRow().getAttribute(1));
   System.out.println(  vo.getRowCount());
PM MAIL   Вверх
Vofka
Дата 25.10.2006, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Кстати нашел что то типа туторила мож кому поможет 
http://www.oracle.com/webapps/online-help/...&vtTopicId=
PM MAIL   Вверх
adf
Дата 25.10.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Так и не получилось чтоли у тебя?

Жалко, что тебе этот способ (ссылку ты кинул) ты не можешь использовать, ввиду желания руководства. Я тебе предлагала именно этот способ в самом начале еще). С ним проблем нет. 
Хотя, если ты уже вынес вызов в action, ничего не помешает тебе сделать вызов методом, описанным в статье.

А вот метод-то получения AppModule рабочий!!
smile

Другое дело - что вьюха не обновляется.
Возможно, ты вызываешь этот кусок кода не в том месте.

По приведенному куску акшена вообще сложно что-то сказать
Не вижу ни класса, от которого экстендится твой акшн, ни метода, где получаем appModule и вьюху.

Не поняла, что за ошибки возникли..
Что значит: 
Цитата

таблица созданная по вьюхе при разработке страницы jsp не обновляется

Т.е. отбор РАБОТАЕТ, но на странице отображается старая вьюха?

PM MAIL   Вверх
Vofka
Дата 25.10.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Т.е. отбор РАБОТАЕТ, но на странице отображается старая вьюха?


именно так.
PM MAIL   Вверх
adf
Дата 25.10.2006, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нужна инфа о твоем action еще раз, подробнее пожалуйста:

класс, от которого экстендится твой акшн, 
метод, где получаем appModule и вьюху.

Это сообщение отредактировал(а) adf - 25.10.2006, 16:01
PM MAIL   Вверх
Vofka
Дата 26.10.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

public class Action1Action extends Action {
    /**This is the main action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     */
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
                                 HttpServletRequest request, 
                                 HttpServletResponse response) throws IOException,        
                                                                      ServletException {
 
 //
   String appId = "AppModule";
   String configName = "rdtex.jsp.model.AppModuleLocal";
   ApplicationModuleRef appModRef = SessionUtil.getAmRefFromRequest(request, appId, configName);
   ApplicationModule am = appModRef.useApplicationModule();
   ViewObject vo = am.findViewObject("WhereObj1");
   vo.setNamedWhereClauseParam("rparam", 2);
   vo.executeQuery();   
   vo.first();
   System.out.println( vo.getCurrentRow().getAttribute(1));
   System.out.println(  vo.getRowCount());
       
    
        return mapping.findForward( "success");
    }


  

}




PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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