Java SAP Hybris:如何在自定义错误页控制器中加载应用程序上下文?
我正在本地机器上使用SAP Hybris 1811。我在Java SAP Hybris:如何在自定义错误页控制器中加载应用程序上下文?,java,spring,servlets,hybris,Java,Spring,Servlets,Hybris,我正在本地机器上使用SAP Hybris 1811。我在web.xml <error-page> <exception-type>java.lang.NullPointerException</exception-type> <location>/errors</location> </error-page> 我需要获得应用程序的正确当前语言环境,以便在错误页面中显示正确的语言,但它仍然只获
web.xml
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/errors</location>
</error-page>
我需要获得应用程序的正确当前语言环境
,以便在错误页面中显示正确的语言,但它仍然只获得英语,尽管它应该是其他语言
我尝试加载i18nService
,例如,它的语言环境是这样的,但它仍然是“en”:
我以为问题是因为
ErrorController
没有扩展AbstractPageController
,但是当我尝试时,没有一个错误方法可以到达。最后我能够得到如下正确的区域设置:
Locale loc = ((Locale)((CommerceJaloSession)this.pageContext.getSession().getAttribute("jalosession")).getAttribute("locale"));
最后,我得到了如下正确的区域设置:
Locale loc = ((Locale)((CommerceJaloSession)this.pageContext.getSession().getAttribute("jalosession")).getAttribute("locale"));
我们使用了SpringMVC的控制器建议概念,您应该能够接收所有信息。同样这样,错误将被捕获在店面本身,您将在那里有很好的控制
@ControllerAdvice(basePackages =
{ "com.custom", "de.hybris.platform", "org.springframework" })
public class GlobalControllerExceptionHandler
{
private static final Logger LOG = Logger.getLogger(GlobalControllerExceptionHandler.class);
private static final String FORWARD_TO_ERROR_PAGE = ControllerConstants.FORWARD_STMT
+ ControllerConstants.ControllerMappings.Error.ErrorController;
@ExceptionHandler(Exception.class)
public String handleException(final Exception exception, final HttpServletRequest request)
{
LOG.error("Exception caught :: " + exception.getMessage(), exception);
request.setAttribute(ControllerConstants.ControllerMappings.Error.ExceptionAttributeName, exception);
return FORWARD_TO_ERROR_PAGE;
}
}
我们使用了SpringMVC的控制器建议概念,您应该能够接收所有信息。同样这样,错误将被捕获在店面本身,您将在那里有很好的控制
@ControllerAdvice(basePackages =
{ "com.custom", "de.hybris.platform", "org.springframework" })
public class GlobalControllerExceptionHandler
{
private static final Logger LOG = Logger.getLogger(GlobalControllerExceptionHandler.class);
private static final String FORWARD_TO_ERROR_PAGE = ControllerConstants.FORWARD_STMT
+ ControllerConstants.ControllerMappings.Error.ErrorController;
@ExceptionHandler(Exception.class)
public String handleException(final Exception exception, final HttpServletRequest request)
{
LOG.error("Exception caught :: " + exception.getMessage(), exception);
request.setAttribute(ControllerConstants.ControllerMappings.Error.ExceptionAttributeName, exception);
return FORWARD_TO_ERROR_PAGE;
}
}