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