Java 在SpringMVC中将变量从@Controller传递到@ControllerAdvice
我创建了Java 在SpringMVC中将变量从@Controller传递到@ControllerAdvice,java,spring,spring-mvc,Java,Spring,Spring Mvc,我创建了@ControllerAdvice,它必须为我设置一些模型属性 @ModelAttribute public void globalAttributes(Model model) { model.addAttribute("pageId", PAGE_ID); } 这是我需要的一个通用示例,PAGE_ID表示实际控制器必须设置的一些变量。由于@ControllerAdvice在controller之前运行,我如何声明此变量并在通知中使用它?如果可能的话。我认为更好的解决方
@ControllerAdvice
,它必须为我设置一些模型属性
@ModelAttribute
public void globalAttributes(Model model) {
model.addAttribute("pageId", PAGE_ID);
}
这是我需要的一个通用示例,PAGE_ID表示实际控制器必须设置的一些变量。由于
@ControllerAdvice
在controller之前运行,我如何声明此变量并在通知中使用它?如果可能的话。我认为更好的解决方案是为控制器使用某种抽象类模式
public abstract class AbstractController {
@ModelAttribute
public void globalAttributes(Model model) {
model.addAttribute("pageId", getPageId());
}
abstract String getPageId();
}
public class MyController extends AbstractController {
@Override
public String getPageId() {
return "MyPageID"
}
//..your controller methods
}
我想你已经用“既然@ControllerAdvice在controller之前运行”回答了你自己的问题-你有没有办法在ControllerAdvice中设置model属性,并在controller中引用它?我想是的。关键是,我必须调用一个服务并传递特定的变量,这对于每个控制器是不同的,并且在
@ControllerAdvice
@daveydave中设置一个返回结果作为model属性,我不确定您是否正确。假设您使用@ControllerAdvice
来处理异常(如官方示例中所示),那么他之前怎么会运行过?我猜,ControllerAdvice
是另一个可用的控制器,它是根据提供给方法的注释执行的(例如@ExceptionHandling
或@modeldattribute
)是的,我已经有了这个解决方案,但我想看看我是否能用@ControllerAdvice
:)完成同样的任务thanks@Alchnemesis:当前版本4.2.3的Spring参考没有任何提示,表明可以获得有关(将/已)处理请求的方法的任何信息。-所以答案是:不,你不能