Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SAP Hybris:如何在自定义错误页控制器中加载应用程序上下文?_Java_Spring_Servlets_Hybris - Fatal编程技术网

Java SAP Hybris:如何在自定义错误页控制器中加载应用程序上下文?

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> 我需要获得应用程序的正确当前语言环境,以便在错误页面中显示正确的语言,但它仍然只获

我正在本地机器上使用SAP Hybris 1811。我在
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;

    }
}