gpt4 book ai didi

validation - 验证未在 1905 Backoffice 中显示的拦截器错误消息

转载 作者:行者123 更新时间:2023-12-04 15:25:15 25 4
gpt4 key购买 nike

public class DefaultCountValidationInterceptor implements ValidateInterceptor
{
@Override
public void onValidate(final Object object, final InterceptorContext interceptorContext) throws InterceptorException
{
if (object instanceof BaseStoreModel)
{
final BaseStoreModel baseStoreModel = (BaseStoreModel) object;
if (baseStoreModel.getCount() < 0 || baseStoreModel.getCount() > 100)
{
throw new InterceptorException("Count should be between 0 and 100");
}
}
}
}

拦截器配置:

<bean id="defaultCountValidationInterceptor"
class="se.istone.hybris.maersk.core.interceptors.DefaultCountValidationInterceptor " />
<bean id="defaultCountValidationInterceptorMapping"
class="de.hybris.platform.servicelayer.interceptor.impl.InterceptorMapping">
<property name="interceptor"
ref="defaultCountValidationInterceptor" />
<property name="typeCode" value="BaseStore" />
</bean>

验证错误消息在 Hybris5.4 HMC 中正确显示,但是它在 Hybris 6.7(1905) Backoffice 中不起作用 enter image description here

最佳答案

由于 ModelSavingExceptionTranslationHandler.toString() 中的 OOTB 代码,您总是会收到默认消息。

public class ModelSavingExceptionTranslationHandler extends ModelExceptionTranslationHandler {
public static final String I18N_UNEXPECTED_UPDATE_ERROR = "unexpected.update.error";

public boolean canHandle(Throwable exception) {
return exception instanceof ModelSavingException
|| exception instanceof ObjectSavingException && exception.getCause() instanceof ModelSavingException;
}

public String toString(Throwable exception) {
return this.getLabelByKey("unexpected.update.error");
}
}

当您抛出 InterceptorException 时,Hybris 在内部抛出 ModelSavingException 并将您的 InterceptorException 作为 Cause。

后台异常由 ExceptionTranslationService 处理,它包含处理不同类型异常的处理程序列表。对于 ModelSavingException,使用了 ModelSavingExceptionTranslationHandler

由于 OOTB 处理程序直接显示默认消息,您可以覆盖此类,也可以创建自己的异常转换处理程序并将其添加到处理程序列表中。

文档 -> https://help.sap.com/viewer/5c9ea0c629214e42b727bf08800d8dfa/1905/en-US/8bc9570b86691014a901c290d2c5f107.html

关于validation - 验证未在 1905 Backoffice 中显示的拦截器错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62387784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com