Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在SpringMVC中将变量从@Controller传递到@ControllerAdvice_Java_Spring_Spring Mvc - Fatal编程技术网

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参考没有任何提示,表明可以获得有关(将/已)处理请求的方法的任何信息。-所以答案是:不,你不能