I have checked in some Menu code checks and Javadoc to help users with this issue in the future.
regards Malcolm Edgar On Wed, Jul 8, 2009 at 3:54 PM, dian<[email protected]> wrote: > > ok, it work > > thx malcolm > > > > Malcolm Edgar-2 wrote: >> >> Hi Dian, >> >> You will need set an access controller on the menu item: >> >> AccessController accessController = new RoleAccessController(); >> >> .. >> Menu menu = new Menu(); >> menu.setAccessController(accessController); >> >> regards Malcolm Edgar >> >> On Wed, Jul 8, 2009 at 11:50 AM, dian<[email protected]> wrote: >>> >>> when I use click-2.1.0-RC1-incubating.jar & >>> click-extras-2.1.0-RC1-incubating.jar, I have problem with my menu. Menu >>> was >>> created by code. this is my code: >>> >>> ========================================================= >>> >>> public void onInit() >>> { >>> mnSrv = (MenuDao) context.getBean("menuDao"); >>> >>> makeMenu(mn, 0); >>> } >>> >>> private void makeMenu(Menu parent, Integer parentId) >>> { >>> List<com.dian.entity.Menu> mnList = >>> mnSrv.getListByParentId(parentId); >>> Menu menu; >>> >>> for(com.dian.entity.Menu men : mnList) >>> { >>> menu = new Menu(); >>> menu.setLabel(men.getLabel()); >>> menu.setTitle(men.getLabel()); >>> menu.setPath(men.getPath()); >>> List data = new Vector(); >>> >>> data.add(men.getRoles()); >>> >>> menu.setRoles(data); >>> >>> parent.getChildren().add(menu); >>> >>> //msg += "<br> " + men.getLabel(); >>> >>> makeMenu(menu, men.getMenuId()); >>> } >>> } >>> >>> >>> ========================================================= >>> >>> if I using click-2.0.1-incubating.jar it can work normally, but when I >>> use >>> click v.2.1.0 RC 1 found error like this: >>> >>> >>> >>> *********************************************************************** >>> >>> Class java.lang.NullPointerException >>> Message null >>> >>> 594: * This method internally uses the <tt>HttpServletRequest</tt> >>> function >>> <tt>isUserInRole(rolename)</tt>, >>> 595: * where the rolenames are derived from the {...@link #getRoles()} >>> property. >>> 596: * >>> 597: * @return true if the user is in one of the menu roles, or false >>> otherwise >>> 598: */ >>> 599: public boolean isUserInRoles() { >>> 600: HttpServletRequest request = getContext().getRequest(); >>> 601: >>> 602: for (int i = 0, size = getRoles().size(); i < size; i++) { >>> 603: String rolename = (String) getRoles().get(i); >>> 604: if (getAccessController().hasAccess(request, rolename)) { >>> 605: return true; >>> 606: } >>> 607: } >>> 608: >>> 609: return false; >>> 610: } >>> 611: >>> 612: /** >>> 613: * Return true if any child menus have the user in one of their menu >>> roles. >>> 614: * Otherwise the method will return false. >>> >>> java.lang.NullPointerException >>> at >>> org.apache.click.extras.control.Menu.isUserInRoles(Menu.java:604) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) >>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) >>> at java.lang.reflect.Method.invoke(Unknown Source) >>> at >>> org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.doInvoke(UberspectImpl.java:389) >>> at >>> org.apache.velocity.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:378) >>> at >>> org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:270) >>> at >>> org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:252) >>> at >>> org.apache.velocity.runtime.parser.node.ASTReference.evaluate(ASTReference.java:460) >>> at >>> org.apache.velocity.runtime.parser.node.ASTOrNode.evaluate(ASTOrNode.java:98) >>> at >>> org.apache.velocity.runtime.parser.node.ASTExpression.evaluate(ASTExpression.java:62) >>> at >>> org.apache.velocity.runtime.parser.node.ASTIfStatement.render(ASTIfStatement.java:85) >>> at >>> org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) >>> at >>> org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:366) >>> at >>> org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175) >>> at >>> org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72) >>> at >>> org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:212) >>> at >>> org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:247) >>> at >>> org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175) >>> at >>> org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) >>> at org.apache.velocity.Template.merge(Template.java:328) >>> at org.apache.velocity.Template.merge(Template.java:235) >>> at >>> org.apache.click.service.VelocityTemplateService.renderTemplate(VelocityTemplateService.java:317) >>> at >>> org.apache.click.ClickServlet.renderTemplate(ClickServlet.java:785) >>> at >>> org.apache.click.ClickServlet.performRender(ClickServlet.java:744) >>> at >>> org.apache.click.ClickServlet.processPage(ClickServlet.java:517) >>> at >>> org.apache.click.ClickServlet.handleRequest(ClickServlet.java:338) >>> at org.apache.click.ClickServlet.doGet(ClickServlet.java:257) >>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) >>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) >>> at >>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) >>> at >>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >>> at >>> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378) >>> at >>> org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) >>> at >>> org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) >>> at >>> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) >>> at >>> org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67) >>> at >>> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) >>> at >>> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) >>> at >>> org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101) >>> at >>> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) >>> at >>> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) >>> at >>> org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105) >>> at >>> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) >>> at >>> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) >>> at >>> org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:116) >>> at >>> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) >>> at >>> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) >>> at >>> org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91) >>> at >>> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) >>> at >>> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) >>> at >>> org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:174) >>> at >>> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) >>> at >>> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) >>> at >>> org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277) >>> at >>> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) >>> at >>> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) >>> at >>> org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89) >>> at >>> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) >>> at >>> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) >>> at >>> org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235) >>> at >>> org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) >>> at >>> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) >>> at >>> org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175) >>> at >>> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236) >>> at >>> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) >>> at >>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) >>> at >>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >>> at >>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) >>> at >>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) >>> at >>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) >>> at >>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) >>> at >>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) >>> at >>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) >>> at >>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) >>> at >>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) >>> at >>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) >>> at java.lang.Thread.run(Unknown Source) >>> >>> *************************************************************************************** >>> >>> what is the problem in my code ? >>> >>> >>> >>> >>> sabob wrote: >>>> >>>> dian wrote: >>>>> thx for your reply, I was try code in clickclick project. FlexiMenu can >>>>> create menu base programatically, but I have problem when I use >>>>> HORIZONTAL >>>>> oriented. >>>>> >>>>> this is display my menu with HORIZONTAL oriented : >>>>> >>>>> http://www.geocities.com/abionale/images/menu_layout.JPG >>>>> >>>>> it should be display horizontal, >>>> >>>> >>>> The menus look a little cramped :) >>>> >>>> For some reason the horizontal-menu.css specified a width of 500px. If >>>> you >>>> remove that rule or specify a bigger value, the menus will expand. >>>> >>>> I've also updated the stylesheet and removed the width rule. >>>> >>>> Thanks >>>> >>>> bob >>>> >>>> >>> >>> -- >>> View this message in context: >>> http://n2.nabble.com/Sub-menu-tp3207667p3223002.html >>> Sent from the click-user mailing list archive at Nabble.com. >>> >> >> > > -- > View this message in context: > http://n2.nabble.com/Sub-menu-tp3207667p3223897.html > Sent from the click-user mailing list archive at Nabble.com. >
