`
Action-人生
  • 浏览: 102880 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

(Portal 开发读书笔记)Spring Portlet MVC 常用注解大全

阅读更多

http://tech.ddvip.com/2013-08/1375683855200280.html
(Portal 开发读书笔记)Spring Portlet MVC 常用注解大全
@Controller  ,标注在类级别,用于标注一个Portlet Handler,控制器类可以是任意的类。
----
@Autowired ,标注在构造器,setter方法,或者字段上,用于让Spring根据类型来注入依赖,所以如果在Spring上下文中如果有某个类的多个bean实例,则会抛出异常,此时我们应该配合@Qualifier 一起使用。
比如我们有
双击代码全选

<bean id="bookservice1" class="foo.bar.service.BookService/>
     
<bean id="bookservice2" class="foo.bar.service.BookService"/>
     
<bean id="bookservice3" class="foo.bar.service.BookService"/>
我们想让我们的Controller注入bookservice1 ,则必须联合使用@Autowired和@Qualifier:
双击代码全选

@Controller(value="addBookController")
public class AddBookController {
@Autowired
@Qualifier("bookservice1")
private BookService bookService;
...
}
@Resource,标注在类,字段,setter方法,但是不可以标注在构造器上,用于让Spring根据名字来注入依赖。
双击代码全选

@Controller(value="addBookController")
public class AddBookController {
@Resource(name="myBookService")
private BookService bookService;
...
}
在Portlet Controller的内部,我们还可以用以下的注解:
@RequestMapping,标注在类和方法上,Portlet常用的映射策略是:将一种Portlet模式映射到控制器类上,然后将请求参数映射到各个处理器方法上。
当用于类级时,它可以将对portlet的请求根据当前portlet的mode和请求参数来映射到Handler上,例如:
双击代码全选

@Controller(value="someController")
@RequestMapping(value="VIEW",
params="action=showSomething")
public class SomeController {
public String showSomething(...) {
return "addBookForm";
}
public void doSomething(...) {
}
}
当用于方法级时,它可以将对portlet的请求根据当前portlet的mode和请求参数映射到Handler的某个方法上,例如:
双击代码全选

@Controller(value="someController")
public class SomeController {
@RequestMapping(value="VIEW",
params="action=showSomething")
public String showSomething(...) {
}
@RequestMapping(value="ACTION", params="action=doSomeWork")
public void doSomething(...) {
}
}
注意,类级别的@RequestMapping的模式和方法级别的@RequestMapping的模式必须匹配,否则会产生错误。
也可以根据方法的签名来让Spring自动判断某个方法是render处理方法还是action处理方法,比如:
双击代码全选

@Controller(value="someController")
@RequestMapping(value="VIEW")
public class SomeController {
...
    
//下面的处理方法是一个render请求的处理方法
@RequestMapping(params="action=showSomething")
public String showSomething(Model model) {
}
//下面的处理方法是一个action请求的处理方法
@RequestMapping(params="action=doSomeWork")
public void doSomething(ActionRequest request) {
}
}
action请求的处理方法总是返回void
----
为了让请求类型映射更加清晰,我们不用@RequestMapping,而是用更加具体的标注比如 @RenderMapping ,@ActionMapping:
----
@RequestMapping
@RenderMapping:标注在方法上,用于将一个render类型的portlet 请求映射到处理器的render方法上,其中value也可以不指定,如果不指定则表示渲染到NOMAL+MAXIMIZED+MINIMIZED上。
双击代码全选

@Controller(value="someController")
@RequestMapping(value="VIEW")
public class SomeController {
@RenderMapping(value="NORMAL",
params="action=showSomething")
public String showSomething(Model model) {
}
}
注意,@RenderMapping必须和@RequestMapping联合使用,因为@RequestMapping可以指定Portlet Mode,而@RenderMapping无法指定Portlet Mode.
-----
@ActionMapping:
@ActionMapping标注在方法上,用于将一个action类型的portlet请求映射到处理器的action方法上,其中value也可以不指定。
双击代码全选

@Controller(value="someController")
@RequestMapping("VIEW")
public class SomeController {
@ActionMapping(value="doSomeWork",
params={"work=laundry","time=enough"})
public String doSomething(ActionRequest request) {
...
}
...
}
注意,@ActionMapping必须和@RequestMapping联合使用,因为@RequestMapping可以指定Portlet Mode,而@ActionMapping无法指定Portlet Mode.
----
@RequestParam 是方法参数级的注解,用于绑定请求参数到方法参数
双击代码全选

@RequestMapping
public void advancedSearch(
   @RequestParam("queryStr") String queryStr,
   @RequestParam("showFlag") String showFlag,
   @RequestParam("totalnumber") String totalNumber,
   @RequestParam("upType") String upType,
   @RequestParam("jmesareq") String jmesaReq,
   @RequestParam("isExportOper") String isExportOper,
   RenderResponse response, final RenderRequest request,
   ModelMap model) {
  // get query structure and query type from page
  List<Long> cd_ids = new ArrayList<Long>();
  if(StringUtils.equals("invoke", jmesaReq)){
   cd_ids = (List<Long>)request.getSession().getAttribute(Constants.RESULT_IDS);
  }
....
}
@ModelAttribute ,标注在方法或者方法参数中,用于从Model对象中添加或者移除属性。
如果用于方法级别,那么方法的返回值被添加到Model对象中,value属性表明存放到Model中的key.例如:
双击代码全选

@Controller(value="bookController")
@RequestMapping("VIEW")
public class BookController {
@Autowired
@Qualifier("myBookService")
private BookService bookService;
...
@ModelAttribute(value="books")
public List<Book> getBooks() {
return bookService.getBooks(isbnNumber);
}
...
}
注意,被@ModelAttribute标注的方法的调用时间总是早于被@RenderMapping或者@ActionMapping所标注的方法.
分享到:
评论

相关推荐

    Spring Portlet MVC的实例 eclispe project

    Spring Portlet MVC是Spring框架在portlet开发中的应用,它提供了一种用于构建portlet应用程序的模型-视图-控制器(MVC)架构。Eclipse是一款广泛使用的Java集成开发环境(IDE),在这里,我们有一个名为"Spring ...

    spring+portlet+mvc

    总结,Spring Portlet MVC是Spring框架与portlet技术的完美结合,它为portlet开发提供了强大的MVC支持,使开发者能够构建高效、灵活的portlet应用。通过深入理解和实践Spring Portlet MVC的相关知识点,开发者可以更...

    spring2.0MVC+spring2.5MVC+portletMVC

    本主题将深入探讨Spring 2.0、2.5版本的MVC特性和Portlet MVC的相关知识。 首先,Spring 2.0在MVC方面引入了显著的改进,包括: 1. **依赖注入(DI)**:Spring 2.0增强了对MVC组件的依赖注入支持,允许开发者更...

    Spring mvc portlet demo

    在这个demo中,我们将会深入探讨如何利用Spring 3.0 MVC架构来开发portlet应用。 **Spring MVC简介** Spring MVC是Spring框架的一部分,它提供了一个用于构建Web应用程序的模型-视图-控制器(MVC)架构。Spring MVC...

    使用spring mvc portlet 3.0开发IBM WebSphere Portlet应用

    在本文中,我们将深入探讨如何使用Spring MVC Portlet 3.0框架开发针对IBM WebSphere Portal的应用。Spring MVC Portlet是Spring Framework的一部分,它提供了一种优雅的方式来构建portlet应用程序,而IBM WebSphere...

    spring portletMVC

    spring portletMVC

    spring-webmvc-portlet-3.1.1.RELEASE.jar.zip

    Spring Web MVC Portlet是Spring MVC框架的扩展,它将MVC设计模式应用于portlet开发,为portlet开发者提供了强大的模型-视图-控制器架构。通过使用Spring Web MVC Portlet,开发者可以利用Spring框架的灵活性和可...

    spring-webmvc-portlet.rar

    在Java企业级开发中,Spring Web MVC和Portlet框架的应用广泛且深入,它们各自在不同的场景下发挥着重要作用。Spring Web MVC是Spring框架的重要组成部分,用于构建高性能、灵活的Web应用程序,而Portlet则是portlet...

    spring-webmvc-portlet-3.2.7.RELEASE.jar

    spring-webmvc-portlet-3.2.7.RELEASE.jarspring-webmvc-portlet-3.2.7.RELEASE.jarspring-webmvc-portlet-3.2.7.RELEASE.jarspring-webmvc-portlet-3.2.7.RELEASE.jar

    spring3 mvc jar

    8. ** Portlet MVC**:Spring 3还引入了Portlet MVC,使得开发portlet应用程序变得容易。 9. ** 异步处理**:通过@Async注解,Spring 3支持后台异步任务执行,提高了应用性能。 10. ** 更强大的数据绑定**:Spring...

    spring-webmvc-portlet-4.3.14.RELEASE.jar

    Spring Portlet MVC和其Web MVC可以说是如出一辙,只是在Web MVC中处于核心的DispatcherServlet在Portlet MVC中换成了DispatcherPortlet

    spring-webmvc-portlet-4.0.0.RELEASE.jar

    spring-webmvc-portlet-4.0.0.RELEASE.jar

    liferay-spring-mvc-portlet:Liferay Spring MVC portlet 的项目模板

    Liferay Spring Portlet MVC 使用 Maven 的 Liferay Spring Portlet MVC 项目模板。 Liferay EE 6.2.10.11 (GA1, SP710) Java 1.7 小门户 2.0 弹簧框架 4.1.5 基于注解的控制器配置 用法 $ git clone ...

    spring-webmvc-portlet.jar

    spring mvc 框架jar包;Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

    spring-webmvc-portlet-3.0.2.RELEASE

    spring-webmvc-portlet-3.0.2.RELEASE

    spring-webmvc-portlet-4.1.0.RELEASE.jar

    spring-webmvc-portlet-4.1.0.RELEASE.jar

    liferay-spring-portlet

    通过深入学习和理解这个项目,开发者可以掌握如何在Liferay中创建和部署Spring Portlet,了解portlet的生命周期和交互方式,以及Spring框架在portlet开发中的应用。同时,如果进一步集成Hibernate,还可以学习到如何...

    Portal开发Portal开发

    【Portal开发详解】 Portal开发是构建企业级门户系统的关键...同时,随着技术的发展,如JSR286(Java Portlet API 2.0)、Portlet Bridge(支持MVC框架的portlet开发)等新技术的应用,也不断推动着Portal开发的进步。

Global site tag (gtag.js) - Google Analytics