的伪代码:
class SomeController {
def myAction() {
// controler is an property passed via ctor
controller.redirect(toWhereever)
}
}
// another variant
class AnotherController {
def myAction(controller) {
// controler is an method argument
controller.redirect(toWhereever)
}
}
有什么建议吗?
编辑:因为这个问题有点干,你可以尝试用一些框架经验来提高你的答案,你认为更好采用这种方法
答案 0 :(得分:7)
Spring MVC和Grails(建立在spring之上)支持依赖注入,无任何继承。每个控制器都是一个不扩展任何东西的类。相反,您可以将其他组件注入其中(使用依赖注入)。例如:
@Controller
@RequestMapping("/user")
public class UserController {
@Inject
private UserService service;
@RequestMapping("/register")
public String register(User user) {..}
}
@Controller
@RequestMapping("/orders")
public class OrderController {
@Inject
private UserController userController
}
(虽然将控制器注入其他控制器并不常见,但可以注入任何对象)
答案 1 :(得分:3)
答案 2 :(得分:2)
Django决定为MVC模式使用不同的术语。在django-speak中,“view”是大多数人称之为控制器的东西。 django视图只是一个获取请求实例并返回响应实例的函数。大致看起来像这样:
from django.http import HttpResponse, Http404
import datetime
def current_datetime(request):
if request.method != 'GET':
raise Http404
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
return HttpResponse(html)
答案 3 :(得分:0)
JSF&amp; Spring MVC
JSF的简单教程: www.coreservlets.com/JSF-Tutorial/jsf2/index.html#Annotations
SpringSource的一个基本示例: http://src.springframework.org/svn/spring-samples/mvc-basic/trunk
A: 您可以在SimpleController#doSomething
执行操作@ManagedBean
public class SimpleController {
public String doSomething() {
...
}
}
SimpleController不扩展任何控制器,@ ManagedBean有助于使它看起来像一个控制器。
A: 您可以在“.... / doSomething”
中执行操作@Controller
public class SimpleController {
@RequestMapping("/doSomething")
public String doSomething() {
...
}
}
SimpleController不扩展任何控制器。
[抱歉粗体网址,我只能在新手答案中发布最多一个网址:-S]
答案 4 :(得分:0)
Struts 2也允许你这样做。所有操作都是简单的java bean。