两个问题:
1
所有Controller
都从MasterController
扩展,并在每个@GetMapping
中实现其抽象方法,以保持一致性。在每个@Controller
中,我必须填充从MasterController
继承的变量。无法保证我会一直做所有这些。一个捷径是从MasterController
调用一个方法来填充所有方法。是否有可能在多个地方捕获相同的请求,因此我不需要每次都执行相同的方法,但它已完成"自动?
@SessionAttributes(value = {"user", "..."})
public abstract class MasterController<T>
{
public Model MODEL;
public HashMap<String, String> INCOMING_PARAMS;
public RequestType REQUEST_TYPE;
public User USER;
public abstract T request(
@ModelAttribute("user") User _user,
@RequestParam HashMap<String, String> _params,
Model _model,
SessionStatus _sessionStatus,
HttpServletRequest _request,
HttpServletResponse _response);
public String otherCommonFunction(String _a)
{
...
}
}
@Controller
public class LoginController extends MasterController<String>
{
@GetMapping(value = "/account-login-page")
@Override
public String request(
@ModelAttribute("user") User _user,
@RequestParam HashMap<String, String> _params,
Model _model,
SessionStatus _sessionStatus,
HttpServletRequest _request,
HttpServletResponse _response)
{
USER = _user; //Do this every time
REQUEST_TYPE = RequestType.GET; //Do this every time
INCOMING_PARAMS = _params; //Do this every time
MODEL = _model; //Do this every time
...
return "..."
}
}
2
如果一个@GetMapping
中有多个@Controller
,我怎样才能确保所有方法都具有完全相同的参数?抽象方法可以在子类中继承一次。可以只复制并粘贴它,但看起来不专业。这有什么解决方案吗?