Wicket AjaxFormComponentUpdatingBehavior Spring 安全性

Wicket AjaxFormComponentUpdatingBehavior Spring Security

我的组件 AjaxFormComponentUpdatingBehavior 有问题。 当我将此组件添加到主页时,springs 安全性启用授权,作为受保护的页面。当我从页面中删除这个组件时,一切都会好起来。

My UNSECURED_RESOURCE_LIST "/resources/", "/assets/", "/css/", "/fonts/", "/webjars/", "/img/", "/js/**".

这是我的 wicket 页面,正如您在我添加 AjaxFormComponentUpdatingBehavior 组件时看到的那样,spring 安全启用授权。

public class FrontPage extends WebPage {
    private List<Language> languages = Arrays.asList(Language.RUSSIAN, 
    Language.ENGLISH);
    private Language language = Language.RUSSIAN;
    private DropDownChoice languagesDD;

public FrontPage() {
    languagesDD = new DropDownChoice<String>("languages", new 
    PropertyModel(FrontPage.this, "language"), new 
    PropertyModel(FrontPage.this, "languages"), new ChoiceRenderer() {
        @Override
        public Object getDisplayValue(Object object) {
            Language language = (Language) object;
            if (Language.RUSSIAN.equals(language)) {
                return getString("Language.RUSSIAN");
            } else if (Language.ENGLISH.equals(language)) {
                return getString("Language.ENGLISH");
            }
            return super.getDisplayValue(object);
        }
    });
    add(languagesDD);
    languagesDD.add(new AjaxFormComponentUpdatingBehavior("change") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            //iWebSession().setLocaleString(language.getCode());
            //setResponsePage(FrontPage.class);
        }
    });
}

}

当我评论这个组件时。一切都变得OK。 我猜想也许 AjaxFormComponentUpdatingBehavior 组件正在尝试使用受保护区域中的资源。 我将资源添加到非安全列表中。 所以我无法理解为什么 spring 在我添加 AjaxFormComponentUpdatingBehavior 组件时启用授权。

public class FrontPage extends WebPage {
    private List<Language> languages = Arrays.asList(Language.RUSSIAN, 
    Language.ENGLISH);
    private Language language = Language.RUSSIAN;
    private DropDownChoice languagesDD;

public FrontPage() {
    languagesDD = new DropDownChoice<String>("languages", new PropertyModel(FrontPage.this, "language"), new PropertyModel(FrontPage.this, "languages"), new ChoiceRenderer() {
        @Override
        public Object getDisplayValue(Object object) {
            Language language = (Language) object;
            if (Language.RUSSIAN.equals(language)) {
                return getString("Language.RUSSIAN");
            } else if (Language.ENGLISH.equals(language)) {
                return getString("Language.ENGLISH");
            }
            return super.getDisplayValue(object);
        }
    });
    add(languagesDD);
//        languagesDD.add(new AjaxFormComponentUpdatingBehavior("change") {
//            @Override
//            protected void onUpdate(AjaxRequestTarget target) {
//                //iWebSession().setLocaleString(language.getCode());
//                //setResponsePage(FrontPage.class);
//            }
//        });
    }
}

好的,我找到了解决办法。 只需将“/wicket/**”添加到您的不安全资源列表中即可。