Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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 从Wicket访问SPRING\u SECURITY\u LAST\u异常_Java_Spring Security_Wicket - Fatal编程技术网

Java 从Wicket访问SPRING\u SECURITY\u LAST\u异常

Java 从Wicket访问SPRING\u SECURITY\u LAST\u异常,java,spring-security,wicket,Java,Spring Security,Wicket,我想创建一个Wicket面板来替换默认(但不是很漂亮)的Spring安全登录页面。表单本身不是什么大事,因为它只是HTML,但我也想查看登录错误 我看到许多JSP代码段包含查看身份验证错误的${SPRING\u SECURITY\u LAST\u EXCEPTION},但是如何从Wicket访问此参数?虽然我从未尝试过,但我认为应该是这样的: 编辑:我现在修复了bug Request request = RequestCycle.get().getRequest(); Obje

我想创建一个Wicket面板来替换默认(但不是很漂亮)的Spring安全登录页面。表单本身不是什么大事,因为它只是HTML,但我也想查看登录错误


我看到许多JSP代码段包含查看身份验证错误的
${SPRING\u SECURITY\u LAST\u EXCEPTION}
,但是如何从Wicket访问此参数?

虽然我从未尝试过,但我认为应该是这样的:

<>编辑:我现在修复了bug

    Request request = RequestCycle.get().getRequest();
    Object lastException = WebUtils.getSessionAttribute(
        ((ServletWebRequest) request).getHttpServletRequest(),
        WebAttributes.AUTHENTICATION_EXCEPTION
    );

  • (Spring,Javadoc)
  • (Spring,JavaDoc)
  • (Spring,JavaDoc)
  • (Wicket,JavaDoc)

从WicketPanel访问此异常,例如:

import org.apache.wicket.markup.html.panel.Panel;

public class LogInMenuPanel extends Panel {

    @Override
    protected void onBeforeRender() {
        super.onBeforeRender();

        HttpSession session = ((ServletWebRequest)this.getRequest()).getHttpServletRequest().getSession();
        Throwable exception = (Throwable) session.getAttribute(WebAttributes.AUTHENTICATION_EXCEPTION);

        //do something with exception
    }

}

谢谢,但这最终导致了一个java.lang.ClassCastException:org.apache.wicket.protocol.http.servlet.ServletWebRequest无法转换为javax.servlet.http.HttpServletRequest.Ok,我刚刚找到了一种获取HttpServletRequest的方法:HttpServletRequest req=((ServletWebRequest)getRequest()).getHttpServletRequest();所以,现在我没有例外,但是getSessionAttribute方法返回null,即使我提供了错误的凭据。好的,我现在修复了我的错误,但我很惊讶它不起作用,因为这正是spring的人正在做的事情,例如: