Can I use different view permissions?

I have several views in Spring configuration and you want to use different permissions for different requests.

Example. For URLs starting with report_* , use a Birt resolver, and for ajax calls, use a Tiles resolver, etc.

Tried the customization property, but all views are allowed by tilesViewResolver .

 <beans:bean id="tilesViewResolver" class="org.springframework.js.ajax.AjaxUrlBasedViewResolver"> <beans:property name="viewClass" value="com.example.example.util.AjaxTiles21View"/> </beans:bean> <beans:bean id="birtViewResolver" class="org.eclipse.birt.spring.core.BirtViewResolver"> ... <beans:property name="order" value="2" /> </beans:bean> <beans:bean id="beanNameResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"> <beans:property name="order" value="1" /> </beans:bean> 
+46
java spring-mvc birt
Aug 2 '14 at 4:53 on
source share
1 answer

You absolutely can. ViewResolver has a single resolveViewName(String) method that returns

View object or null if not found (optional to enable ViewResolver chaining)

Your ViewResolver beans are registered. When the view name is returned by the handler, Spring ViewResolver through each ViewResolver , calling their resolveViewName method with the given name. If the method returns non- -null , View used. If null returned, it continues the iteration.

Thus, the implementation should return null , if Spring is to skip.

There are several implementations that never return null . This is similar to your custom ViewResolver classes. If the ViewResolver returns a View , even if that View will ultimately not be displayed, Spring will use it.

You need to either fix this or order ViewResolver beans. For example, you can order them using the Ordered interface. Ask your classes to implement this interface and return the appropriate value.

+40
Aug 02 '14 at 5:00
source share



All Articles