Как вернуть ошибку из сервиса OFBiz SECA

Я использую seca для проверки значения поля из базы данных. Если значение поля не соответствует требуемой строке, оно вернет ошибку с некоторой строкой, используя ServiceUtil.returnError(String);

При использовании ServiceUtil.returnError("Some error messages."). OFBiz показать сообщение об ошибке

The Following Errors Occurred:

Error calling event: org.ofbiz.webapp.event.EventHandlerException: Service invocation error (No transaction manager or invalid status)

Я хочу показать только строку сообщения об ошибке, которую я передаю в методе ServiceUtil.returnError. Как мне этого добиться? Я что-то пропустил? Пример кода ниже:

Сервис эка:

<eca service="createProduct" event="commit">
    <action mode="sync" service="checkProduct"/>
</eca>

сервис_валидатор:

<service name="checkProduct" engine="java" location="mypackage.validation.ValidationServices"
         invoke="checkProduct" auth="true">
        <description></description>
        <attribute name="productId" mode="IN" type="String"/>
</service>

ValidationServices.java:

public static Map<String, Object> checkProduct(DispatchContext dctx, Map<String, ?> context) {
    String productId = (String) context.get("productId");
    if (productId.equals("Not my product")); {
        ServiceUtil.returnError("Not my product");
    }
    ServiceUtil.returnSuccess();
}

Примечание. Если я изменю событие SECA на недействительное, оно вернет сообщение и добавит сообщение об исключении отката транзакции, а затем на экране отобразится полная строка. Как я могу показать только сообщение, которое было возвращено из службы?


person Deb    schedule 07.12.2015    source источник


Ответы (1)


  1. Сначала убедитесь, что база данных правильно настроена в вашей среде IDE.
  2. Проверьте правильность имени пользователя и пароля для базы данных.
  3. Убедитесь, что все запросы, которые вы написали в своем коде, верны.
  4. Убедитесь, что вы упомянули выше, настроены правильно.
  5. Обновите все зависимости и библиотеки вашего проекта.
  6. Перезагрузите серверы и перезапустите IDE.

Затем перезапустите свой проект. Он должен работать.

person Usman_Enterprise_Developer    schedule 07.12.2015
comment
Спасибо за ответ. Код работает правильно, даже он правильно зарегистрировал сообщение об ошибке. Сообщение журнала Message: Error in Service [checkProduct]: Not my product. Но на экране отображается только указанное выше сообщение, а не данное. - person Deb; 07.12.2015
comment
Вы пытаетесь обновить веб-страницу веб-браузера. Когда вы видите это сообщение об ошибке. Как это должно работать - person Usman_Enterprise_Developer; 08.12.2015
comment
Мне жаль. Я не понял, что ты говоришь. На экране отображается только сообщение об исключении того, что выдает TransactionManager. Не сообщение об ошибке, которое я возвращаю из службы. Ожидаемый результат должен состоять в том, чтобы отображать только сообщение (на экране), которое я возвращаю из службы, - person Deb; 08.12.2015