2017-09-01 6 views
0

コンポーネントAjaxFormComponentUpdatingBehaviorに問題があります。 このコンポーネントをメインページに追加すると、springsセキュリティで保護されたページとして承認が有効になります。このコンポーネントをページから削除すると、すべてがうまくいくようになります。Wicket AjaxFormComponentUpdatingBehaviorスプリングセキュリティ

マイUNSECURED_RESOURCE_LIST "/リソース/ "、 "/資産/"、 "/ CSS/"、 "/フォント/"、 "/ webjars/"、 "/ IMG/" 、 "/ js/**"。

ここに私のウィケットページがあります.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); 
     } 
    }); 
} 

}

enter image description here

+0

もっと具体的にすることができますか? – soorapadman

答えて

0

OK、私は解決策を見つけました。 保護されていないリソースリストに「/ wicket/**」を追加するだけです。

0

私はこのコンポーネントをコメントします。すべてがOKになります。 AjaxFormComponentUpdatingBehaviorコンポーネントが保護された領域にあるリソースを使用しようとしている可能性があります。 リソースを非セキュリティリストに追加しました。 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); 
//   } 
//  }); 
    } 
} 

enter image description here

関連する問題