Я использую 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 сообщение об исключении транзакции, а затем полная строка показала его на экране. Как я могу показать только сообщение, которое было возвращено из службы?
Спасибо за ответ. Код работает правильно, даже если он правильно зарегистрировал сообщение об ошибке. Сообщение журнала 'Сообщение: Ошибка в сервисе [checkProduct]: Не мой продукт.« Но на экране он показывает только указанное выше сообщение, а не данное. –
Вы пытаетесь обновить веб-страницу своего веб-браузера. Когда вы увидите это сообщение об ошибке. Как это должно работать –
Прошу прощения. Я не понимал, что вы говорите. На экране отображается только сообщение исключения, которое передает TransactionManager. Не сообщение об ошибке, которое я возвращаю из службы. Ожидаемый результат должен состоять в том, чтобы он отображал только сообщение (на экране), которое я возвращаю из службы, –