2015-12-07 2 views
0

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

При использовании 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:

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

service_validator:

<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 для подтверждения, он вернет сообщение и добавит его с помощью th e сообщение об исключении транзакции, а затем полная строка показала его на экране. Как я могу показать только сообщение, которое было возвращено из службы?

ответ

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

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

+0

Спасибо за ответ. Код работает правильно, даже если он правильно зарегистрировал сообщение об ошибке. Сообщение журнала 'Сообщение: Ошибка в сервисе [checkProduct]: Не мой продукт.« Но на экране он показывает только указанное выше сообщение, а не данное. –

+0

Вы пытаетесь обновить веб-страницу своего веб-браузера. Когда вы увидите это сообщение об ошибке. Как это должно работать –

+0

Прошу прощения. Я не понимал, что вы говорите. На экране отображается только сообщение исключения, которое передает TransactionManager. Не сообщение об ошибке, которое я возвращаю из службы. Ожидаемый результат должен состоять в том, чтобы он отображал только сообщение (на экране), которое я возвращаю из службы, –

Смежные вопросы