2012-06-10 1 views
1

пожалуйста, вы можете предоставить мне решение моей проблемы,<сиро: hasRole ..> тег не работает причина NoSuchMethodException Exception

У меня есть интеграция с Apache Shiro и один раз я использую Сиро: hasRole тег или другие теги исключение было брошено говорит:

Caused by: java.lang.NoSuchMethodException: org.apache.shiro.web.tags.HasRoleTag.<init>(javax.faces.view.facelets.TagConfig) 
    at java.lang.Class.getConstructor0(Class.java:2706) 
    at java.lang.Class.getConstructor(Class.java:1657) 
    at com.sun.faces.facelets.tag.AbstractTagLibrary$HandlerFactory.createHandler(AbstractTagLibrary.java:187) 
    at com.sun.faces.facelets.tag.AbstractTagLibrary.createTagHandler(AbstractTagLibrary.java:678) 
    at com.sun.faces.facelets.tag.CompositeTagLibrary.createTagHandler(CompositeTagLibrary.java:184) 
    at com.sun.faces.facelets.compiler.TagUnit.createFaceletHandler(TagUnit.java:120) 
    at com.sun.faces.facelets.compiler.TextUnit.createFaceletHandler(TextUnit.java:117) 
    at com.sun.faces.facelets.compiler.CompilationUnit.getNextFaceletHandler(CompilationUnit.java:115) 
    at com.sun.faces.facelets.compiler.TagUnit.getNextHandler(TagUnit.java:124) 
    at com.sun.faces.facelets.tag.AbstractTagLibrary$ComponentConfigWrapper.getNextHandler(AbstractTagLibrary.java:230) 
    at javax.faces.view.facelets.TagHandler.<init>(TagHandler.java:116) 
    at javax.faces.view.facelets.MetaTagHandler.<init>(MetaTagHandler.java:105) 
    at javax.faces.view.facelets.DelegatingMetaTagHandler.<init>(DelegatingMetaTagHandler.java:69) 
    at javax.faces.view.facelets.ComponentHandler.<init>(ComponentHandler.java:128) 
    at com.sun.faces.facelets.tag.jsf.html.HtmlComponentHandler.<init>(HtmlComponentHandler.java:75) 
    at sun.reflect.GeneratedConstructorAccessor19.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at com.sun.faces.facelets.tag.AbstractTagLibrary$UserComponentHandlerFactory.createHandler(AbstractTagLibrary.java:306) 
    at com.sun.faces.facelets.tag.AbstractTagLibrary.createTagHandler(AbstractTagLibrary.java:678) 
    at com.sun.faces.facelets.tag.CompositeTagLibrary.createTagHandler(CompositeTagLibrary.java:184) 
    at com.sun.faces.facelets.compiler.TagUnit.createFaceletHandler(TagUnit.java:120) 
    at com.sun.faces.facelets.compiler.TextUnit.createFaceletHandler(TextUnit.java:117) 
    at com.sun.faces.facelets.compiler.CompilationUnit.getNextFaceletHandler(CompilationUnit.java:115) 
    at com.sun.faces.facelets.compiler.TagUnit.getNextHandler(TagUnit.java:124) 
    at com.sun.faces.facelets.tag.AbstractTagLibrary$ComponentConfigWrapper.getNextHandler(AbstractTagLibrary.java:230) 
    at javax.faces.view.facelets.TagHandler.<init>(TagHandler.java:116) 
    at javax.faces.view.facelets.MetaTagHandler.<init>(MetaTagHandler.java:105) 
    at javax.faces.view.facelets.DelegatingMetaTagHandler.<init>(DelegatingMetaTagHandler.java:69) 
    at javax.faces.view.facelets.ComponentHandler.<init>(ComponentHandler.java:128) 
    at com.sun.faces.facelets.tag.jsf.html.HtmlComponentHandler.<init>(HtmlComponentHandler.java:75) 
    at sun.reflect.GeneratedConstructorAccessor19.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at com.sun.faces.facelets.tag.AbstractTagLibrary$UserComponentHandlerFactory.createHandler(AbstractTagLibrary.java:306) 

Обратите внимание, что у меня есть правильная конфигурация Shiro причем безопасность сиро применяются и ресурсы защищены, где пользователь должен пройти проверку подлинности и права доступу к ресурсам приложения.

Но как только я пытаюсь задействовать ярлыки безопасности, исключение видно.

Я открываю яркие ярлыки, такие как HasRoleTag, и на самом деле нет конструктора, принимает экземпляр javax.faces.view.facelets.TagConfig как параметр!

Не могли бы вы помочь мне решить проблему.

Спасибо.

ответ

1

Начиная с версии 1.2, Shiro не поставляется с поддержкой JSF. Тег, который вы смотрите, является тегом JSP. Deluan Quintão написал набор ярлыков JSF для сиро. Вы можете прочитать его сообщение об использовании их здесь: http://techbeats.deluan.com/apache-shiro-tags-for-jsffacelets

Обратите внимание, что его работа будет официально включена в Сиро с 1.3. (действительно, он уже находится в багажнике)

+0

Я прочитал его сообщение, но он рассказал о JSF 1.x, и я работаю под JSF 2.x. Также я попробовал его с другим типом исключения, связанным с обработчиком facelets –

+0

Я использую библиотеку по ссылке с JSF2, и, в частности, я использую тег HasRole, я думаю, вам нужно предоставить более подробную информацию о том, что вы делаете, что приводит к этой ошибке если вам нужна дополнительная помощь –