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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Spring + Hibernate + JSF 2.0 
:(
    Опции темы
MisterCleric
Дата 19.4.2011, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

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



Привет. Нет от JSF ты не отказываешь. Ты просто делаешь конфигурацию backend для JSF в Spring. JSF у тебя остается - он просто делает делегирование в Spring.
MVC тебе здесь не нужно: у тебя же есть FacesServlet, который и решает, какой backingBean вызываеть, а тот уже в свою очередь является SpringBean.
Для них обоих их взаимодействие остается прозрачным.
1. В web.xml ты прописываешь как конфигурацию JSF, так и конфигурацию Spring. Главное не забыть это:
Код

  <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>

Чтобы можно было пользоваться request & session Scope при конфигурации Spring/
2. В faces-config.xml добавляешь такое:
Код

  <application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
  </application>

Все остальное - navigation-rules, converters, validators может остаться без изменения, хотя я тоже последние конфигурю в Spring
3. И того: у тебя получается приложение на JSF, просто его бины сконфигурены в другом контейнере. 


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
isabsent
Дата 1.5.2011, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(MisterCleric @ 15.4.2011,  14:59)
Привет.
Вообще по своему опыту могу сказать такое:
JSF-бины, в принципе, и не нужны.
Достаточно все описать в Spring и использовать их напрямую.
Для это в faces-config.xml добавить такое:
Код

 <application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
 </application>

Пробую реализовать вашу программу на основе референсного примера из пакета Spring Web Flow 2.3 swf-booking-faces В нем разбирается Spring-centric интеграция Spring, Hibernate с JSF2.0.  Столкнулся с необходимостью написания своего собственного конвертера WalletConverter.java, преобразующего строку списка referenceData.wallets в объект Wallet, чтобы вставить его в поле referenceData.wallets при обработке .xhtml страницы с элементом выбора из выпадающего списка:
Код

<h:selectOneMenu id="Wallet" value="#{newOutcome.wallet}">
     <f:selectItems value="#{referenceData.wallets}" />
     <f:converter converterId="walletConverter" />
</h:selectOneMenu>

В референсном примере такой конвертации нет - только "строки <-> числа", поэтому и проблемы такой нет.
На сколько я понял и мануалов, я должен добавить объявление конвертора в faces-config.xml
Код

<?xml version='1.0' encoding='UTF-8'?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
        version="2.0">

    <application>
        <message-bundle>JsfMessageResources</message-bundle>
    </application>
    
    <converter>
        <converter-id>walletConverter</converter-id>
        <converter-class>org.springframework.webflow.samples.booking.WalletConverter</converter-class>
    </converter>
</faces-config>

В WalletConverter.java мне необходим доступ к объекту walletService из контекста Spring
Код

package org.springframework.webflow.samples.booking;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class WalletConverter implements Converter  {

    @Autowired
    private WalletService walletService;

    public Wallet getAsObject(FacesContext context, UIComponent component, String name) {
        return walletService.getWalletByName(name);
    }

    public String getAsString(FacesContext context, UIComponent component, Object value) {
        Wallet wallet = (Wallet) value;
        return wallet.getName();
    }
}

Проблема в том, что Spring почему-то никак не хочет инжектировать walletService в предназначенное ему аннотацией @Autowired место. Под дебагом я вижу, что перед моментом конвертации вместо walletService стоит ссылка на null. Получать этот бин напрямую из контекста Spring мне не хочется по некоторым причинам. Поэтому возникает вопрос - Как инжектировать бин в JSF-конвертор? Чем тут может помочь добавление 
Код

 <application>
        <el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
 </application>

 в faces-config.xml ?
Поясните плз, почему в web.xml вы говорите, что нужно использовать 
Код

  <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>
 а не 
Код

    <listener>
        <listener-class>
                    org.springframework.web.context.ContextLoaderListener
                </listener-class>
    </listener>
 как в примере?
Если возможно - выложите plz, исходники вашего приложения или хотя бы конфигурационные файлы web.xml, web-mvc.xml, web-flow.xml и faces-config.xml

Это сообщение отредактировал(а) isabsent - 1.5.2011, 12:08
PM MAIL   Вверх
RageSteel
  Дата 1.5.2011, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Тебе не нужен JSF-конвертор для твоего случая.
В JSF2 можно просто написать:
Код

<f:selectItems value="#{referenceData.wallets}"
var="_wallet" itemValue="#{_wallet}" itemLabel="#{_wallet.name}" />


Что-же касается конверторов, то их тожно определять с помощью аннотаций.
А что касается того, как получить экземпляр сервиса в конверторе. Самое простое — это получить спринговый контекст и запросить у него.
Либо нужно как-то встраиваться в процесс создания конверторов в JSF2.
PM MAIL   Вверх
isabsent
Дата 1.5.2011, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(RageSteel @ 1.5.2011,  12:06)
Тебе не нужен JSF-конвертор для твоего случая.
В JSF2 можно просто написать:
Код

<f:selectItems value="#{referenceData.wallets}"
var="_wallet" itemValue="#{_wallet}" itemLabel="#{_wallet.name}" />



Спасибо, попробую осмыслить сейчас. Дадите ссылочку на то где это написано? Два дня гуглил - не попадалось ничего похожего...

P.S. Проверил вашу подсказку - Exception такой же как и был до того как я понял, что нужно писать конвертер
Код

DEBUG: org.springframework.binding.message.DefaultMessageContext - 
     Resolving message using [FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@cce2e7 
          severity = ERROR, text = 'Conversion Error setting value 'Wallet(Cash)' for 'null Converter'. ']


Это сообщение отредактировал(а) isabsent - 1.5.2011, 12:31
PM MAIL   Вверх
RageSteel
Дата 1.5.2011, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(isabsent @ 1.5.2011,  10:13)
Спасибо, попробую осмыслить сейчас. Дадите ссылочку на то где это написано? Два дня гуглил - не попадалось ничего похожего...

P.S. Проверил вашу подсказку - Exception такой же как и был до того как я понял, что нужно писать конвертер
Код

DEBUG: org.springframework.binding.message.DefaultMessageContext - 
     Resolving message using [FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@cce2e7 
          severity = ERROR, text = 'Conversion Error setting value 'Wallet(Cash)' for 'null Converter'. ']

Документация по f:selectItems

Может у тебя твой конвертор мешается? Я активно пользуюсь этим синтаксисом и у меня с ним проблем не было. У тебя точно JSF 2.0?
PM MAIL   Вверх
isabsent
Дата 1.5.2011, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Судя по jsf-api-2.0.3.jar и jsf-impl-2.0.3.jar в Libraries проекта - надеюсь что JSF2.0... Или еще надо какие-то либы смотреть? Я делаю это под Tomcat 6 - в нем не может быть проблемы? 
Может есть какая-то демо-версия или хотя бы основные конфиги - сравнить? Видимо я что-то не так делаю. По прежнему пытается найти конверторы - 'null Converter' в Exception...

P.S. Никак не пойму как указание параметров itemValue и itemLabel на .xhtml-странице поможет мне вытащить нужный объект wallet из ArrayList<SelectItem> и поместить его поместить в поле newOutcome.wallet. 
Код

    public List<SelectItem> getWallets() {
        List<Wallet> allWallets;

    if (wallets == null) {
        wallets = new ArrayList<SelectItem>();
        allWallets = walletService.findAllWallets();
        for (Wallet w:allWallets) wallets.add(new SelectItem(w, w.getName()));
    }
    return wallets;
    }

Может у вас там что-то типа Using a Backing Map организовано и поэтому всё работает?

Это сообщение отредактировал(а) isabsent - 1.5.2011, 15:36
PM MAIL   Вверх
RageSteel
Дата 1.5.2011, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Для использования itemLabel и itemValue метод getWallets должен возвращать не список SelectItem'ов, а просто список объектов Wallet, без преобразования.
PM MAIL   Вверх
isabsent
Дата 1.5.2011, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Точно! Невнимательно прочёл jsf-доку...
Переписал
Код

    public List<Wallet> getWallets() {
    return walletService.findAllWallets();


Код

                    <h:selectOneMenu id="Wallet" value="#{newOutcome.wallet}">
                        <f:selectItems value="#{referenceData.wallets}" var="w" itemValue="#{w}" itemLabel="#{w.name}" />
                    </h:selectOneMenu>

И всё равно - 
Код

DEBUG: org.springframework.binding.message.DefaultMessageContext - Resolving message using 
     [FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@60eb0c severity = ERROR, text =
          'Conversion Error setting value 'Wallet(Cash)' for 'null Converter'


Это сообщение отредактировал(а) isabsent - 1.5.2011, 17:55
PM MAIL   Вверх
RageSteel
Дата 1.5.2011, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



То что оно пишет в консоль Debug, может это от того, что у тебя на странице нет <h:messages />?
Конверторов больше никаких нет, ни в faces-config ни в классах с аннотациями?
Тип newOutcome.wallet точно принимает значение типа Wallet?
Почему в логах пишет Wallet(Cash), откуда берётся Cash?
В какой момент возникает сообщение? При отображении страницы или при осуществлении действия?
PM MAIL   Вверх
isabsent
Дата 1.5.2011, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(RageSteel @ 1.5.2011,  18:42)
То что оно пишет в консоль Debug, может это от того, что у тебя на странице нет <h:messages />?
Конверторов больше никаких нет, ни в faces-config ни в классах с аннотациями?
Тип newOutcome.wallet точно принимает значение типа Wallet?
Почему в логах пишет Wallet(Cash), откуда берётся Cash?
В какой момент возникает сообщение? При отображении страницы или при осуществлении действия?

У меня нет странице <h:messages />. А для чего оно там нужно? 
В логах пишет Wallet(Cash) потому что берет мой переопределенный wallet.toString() и выводит его в консоль. 
Код

    @Override
    public String toString() {
    return "Wallet(" + name + ")";
    }

Его же выводит и в выпадающих списках на веб-странице. Cash - это ID одного из Wallet - того, которого я выбрал из выпадающего списка перед тем как нажать на кнопку чтобы сохранить объект newOutcome в базу. 
Все упоминания о конверторах выкинул ОТОВСЮДУ и сами классы конверторов удалил из проекта.
В main-flow.xml
Код

        <var name="newOutcome" class="org.springframework.webflow.samples.booking.Outcome"/>

Код

public class Outcome implements Serializable {

    private static final long serialVersionUID = 1171567558348174963L;

    private Long id;

    private Wallet wallet;
...

Сообщение возникает при выполнении действия. До этого всё отрабатывается без ошибок.
Код

<p:commandButton id="saveOutcome" value="Save" action="saveOutcome" update=":outcomes" />

Полный лог того что происходит после нажатия на кнопку:
Код

DEBUG: org.springframework.web.servlet.DispatcherServlet - DispatcherServlet with name 'Spring MVC Dispatcher Servlet' processing POST request for [/booking/spring/main]
DEBUG: org.springframework.webflow.mvc.servlet.FlowHandlerMapping - Mapping request with URI '/booking/spring/main' to flow with id 'main'
DEBUG: org.springframework.webflow.executor.FlowExecutorImpl - Resuming flow execution with key 'e1s2
DEBUG: org.springframework.webflow.conversation.impl.SessionBindingConversationManager - Locking conversation 1
DEBUG: org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository - Getting flow execution with key 'e1s2'
DEBUG: org.springframework.webflow.definition.registry.FlowDefinitionRegistryImpl - Getting FlowDefinition with id 'main'
DEBUG: org.springframework.webflow.execution.factory.ConditionalFlowExecutionListenerLoader - Loaded [2] of possible 2 listeners for this execution request for flow 'main', the listeners to attach are list[org.springframework.faces.webflow.FlowFacesContextLifecycleListener@16a068, org.springframework.webflow.security.SecurityFlowExecutionListener@d17650]
DEBUG: org.springframework.webflow.engine.impl.FlowExecutionImpl - Resuming in org.springframework.webflow.mvc.servlet.MvcExternalContext@f1e762
DEBUG: org.springframework.webflow.engine.Flow - Restoring [FlowVariable@e136c3 name = 'searchCriteria', valueFactory = [BeanFactoryVariableValueFactory@1d241c9 type = SearchCriteria]]
DEBUG: org.springframework.webflow.engine.Flow - Restoring [FlowVariable@60904e name = 'newOutcome', valueFactory = [BeanFactoryVariableValueFactory@1a212ed type = Outcome]]
DEBUG: org.springframework.faces.support.RequestLoggingPhaseListener - Entering JSF Phase: RESTORE_VIEW 1
DEBUG: org.springframework.faces.webflow.JsfViewFactory - UIViewRoot restored for 'reviewOutcomes.xhtml'
DEBUG: org.springframework.faces.webflow.FlowLifecycle - Executing view post back lifecycle
DEBUG: org.springframework.faces.support.RequestLoggingPhaseListener - Entering JSF Phase: APPLY_REQUEST_VALUES 2
DEBUG: org.springframework.faces.webflow.FlowLifecycle - Processing decodes
DEBUG: org.springframework.faces.support.RequestLoggingPhaseListener - Entering JSF Phase: PROCESS_VALIDATIONS 3
DEBUG: org.springframework.faces.webflow.FlowLifecycle - Processing validators
DEBUG: org.springframework.binding.message.DefaultMessageContext - Resolving message using [FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@1d8337b severity = ERROR, text = 'Conversion Error setting value 'Wallet(Cash)' for 'null Converter'. ']
DEBUG: org.springframework.binding.message.DefaultMessageContext - Adding resolved message [FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@1d8337b severity = ERROR, text = 'Conversion Error setting value 'Wallet(Cash)' for 'null Converter'. ']
DEBUG: org.springframework.binding.message.DefaultMessageContext - Resolving message using [FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@11bfb3e severity = ERROR, text = 'Conversion Error setting value 'Wallet(Cash)' for 'null Converter'. ']
DEBUG: org.springframework.binding.message.DefaultMessageContext - Adding resolved message [FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@11bfb3e severity = ERROR, text = 'Conversion Error setting value 'Wallet(Cash)' for 'null Converter'. ']
DEBUG: org.springframework.binding.message.DefaultMessageContext - Resolving message using [FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@baf4c severity = ERROR, text = 'Conversion Error setting value 'Purchase(Car)' for 'null Converter'. ']
DEBUG: org.springframework.binding.message.DefaultMessageContext - Adding resolved message [FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@baf4c severity = ERROR, text = 'Conversion Error setting value 'Purchase(Car)' for 'null Converter'. ']
DEBUG: org.springframework.binding.message.DefaultMessageContext - Resolving message using [FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@121be32 severity = ERROR, text = 'Conversion Error setting value 'Purchase(Car)' for 'null Converter'. ']
DEBUG: org.springframework.binding.message.DefaultMessageContext - Adding resolved message [FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@121be32 severity = ERROR, text = 'Conversion Error setting value 'Purchase(Car)' for 'null Converter'. ']
DEBUG: org.springframework.webflow.engine.ViewState - Rendering + [JSFView = '/WEB-INF/flows/main/reviewOutcomes.xhtml']
DEBUG: org.springframework.webflow.engine.ViewState -   Flash scope = map['flowRenderResponse' -> true]
DEBUG: org.springframework.webflow.engine.ViewState -   Messages = [DefaultMessageContext@1f23d57 sourceMessages = map[[null] -> list[[empty]], 'j_idt33:Wallet_summary' -> list[[FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@1d8337b severity = ERROR, text = 'Conversion Error setting value 'Wallet(Cash)' for 'null Converter'. ']], 'j_idt33:Wallet_detail' -> list[[FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@11bfb3e severity = ERROR, text = 'Conversion Error setting value 'Wallet(Cash)' for 'null Converter'. ']], 'j_idt33:Purchase_summary' -> list[[FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@baf4c severity = ERROR, text = 'Conversion Error setting value 'Purchase(Car)' for 'null Converter'. ']], 'j_idt33:Purchase_detail' -> list[[FlowFacesContextMessageDelegate.FlowFacesMessageAdapter@121be32 severity = ERROR, text = 'Conversion Error setting value 'Purchase(Car)' for 'null Converter'. ']]]]
DEBUG: org.springframework.faces.webflow.JsfView - Asking faces lifecycle to render
DEBUG: org.springframework.faces.support.RequestLoggingPhaseListener - Entering JSF Phase: RENDER_RESPONSE 6
DEBUG: org.springframework.faces.webflow.FlowViewStateManager - Saving view root '/WEB-INF/flows/main/reviewOutcomes.xhtml' in view scope
DEBUG: org.springframework.faces.webflow.FlowViewStateManager - Saving view root '/WEB-INF/flows/main/reviewOutcomes.xhtml' in view scope
DEBUG: org.springframework.faces.webflow.JsfView - View rendering complete
DEBUG: org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository - Putting flow execution '[FlowExecutionImpl@9d966d flow = 'main', flowSessions = list[[FlowSessionImpl@1feea1e flow = 'main', state = 'reviewOutcomes', scope = map['searchCriteria' -> [Search Criteria searchString = '', 'newOutcome' -> Outcome(null,null), 'viewScope' -> map['outcomes' -> org.springframework.webflow.samples.booking.OutcomeLazyDataModel@bc6a08, 'flowSerializedViewState' -> [FlowSerializedView@1d54e44 viewId = '/WEB-INF/flows/main/reviewOutcomes.xhtml']]]]]]' into repository
DEBUG: org.springframework.webflow.execution.repository.impl.DefaultFlowExecutionRepository - Adding snapshot to group with id 2
DEBUG: org.springframework.webflow.conversation.impl.SessionBindingConversationManager - Putting conversation attribute 'scope' with value map['flashScope' -> map['messagesMemento' -> map[[empty]]]]
DEBUG: org.springframework.webflow.conversation.impl.SessionBindingConversationManager - Unlocking conversation 1
DEBUG: org.springframework.web.servlet.DispatcherServlet - Null ModelAndView returned to DispatcherServlet with name 'Spring MVC Dispatcher Servlet': assuming HandlerAdapter completed request handling
DEBUG: org.springframework.web.servlet.DispatcherServlet - Successfully completed request

А как должен быть аннотирован тот класс, в котором я делаю 
Код

    public List<Wallet> getWallets() {
    return walletService.findAllWallets();
    }

У меня просто @Service стоит. Может надо @Scope(request) какой-нибудь?

Это сообщение отредактировал(а) isabsent - 1.5.2011, 19:27
PM MAIL   Вверх
RageSteel
  Дата 1.5.2011, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ух. А можешь проект куда-нибудь выложить? А то у меня остаются только мысли вроде: «может что-то не так с развёртыванием и где-то остались старые файлы».

<h:messages /> нужно для отображения сообщения JSF'а. В частности туда бы у тебя вывелись сообщения о необходимости конвертации.

Что-же касается аннотаций @Service. Я знаю что там у Spring'а по умолчанию, но то что у тебя правильно выводит списки означает, что оно работает.
PM MAIL   Вверх
isabsent
Дата 1.5.2011, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Попробовал на Гугл выложить - что-то по ссылке архив не загружается... Сейчас подумаю - куда еще можно. Может проще на мыло выслать?

А! Вот - догадался и сюда выложил  smile 

Это сообщение отредактировал(а) isabsent - 1.5.2011, 20:48
PM MAIL   Вверх
RageSteel
  Дата 1.5.2011, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



PM MAIL   Вверх
isabsent
Дата 1.5.2011, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Перевыложил архив - замените плз. Там была версия с вариантом backing Map и кое-какие мелочи поправил.

На первой странице в левом верхнем углу нажать на login
На второй странице выбрать из предложенного списка login/password и нажать Login
На третьей ничего не вводить - только нажать Find Outcomes
На четвертой выбрать что-нибудь из выпадающих списков, в третье поле вставить 120.00, по четвертому щелкнуть и выбрать дату, в пятое вставить любой текст и нажать кнопку Save справа от строки ввода.

После этого в логе появятся DEBUG'и с error'ами на тему Conversion Error setting value 'Wallet(Cash)' for 'null Converter

Это сообщение отредактировал(а) isabsent - 1.5.2011, 21:13

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  booking.rar 228,30 Kb
PM MAIL   Вверх
isabsent
Дата 2.5.2011, 07:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Сейчас выкину всё лишнее - две страницы, две таблицы, скрипт для их создания - и выложу. 
На первой странице - перейти по ссылке "Start your Spring Travel experience"
На второй странице выбрать что-нибудь из выпадающего списка, во второе поле вставить 120.00, по третьему щелкнуть и выбрать дату, в пятое вставить любой текст и нажать кнопку "Save".

Это сообщение отредактировал(а) isabsent - 2.5.2011, 10:23

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  WebKeeper.rar 195,90 Kb
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0968 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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