Considering the following sample.
How to access to arguments/parameters of the application in the controller?
Thank you.
public static T load(String resource, final P parameter)
throws MoisException {
try {
logger.debug("resource: {}; parameter: {}", resource, parameter);
FXMLLoader loader = new FXMLLoader(getResource(resource));
// pass parameter into Controller,before invoke the initialize()
loader.setControllerFactory(new Callback, Object>() {
@Override
public Object call(Class> param) {
Object controller = null;
try {
controller = ReflectUtil.newInstance(param);
} catch (InstantiationException e) {
throw new MoisException("can't new instance for: " + param.getName(), e);
} catch (IllegalAccessException e) {
throw new MoisException("can't new instance for: " + param.getName(), e);
}
if (controller instanceof ParameterAware) {
((ParameterAware) controller).setParameter(parameter);
}
return controller;
}
});
T node = (T) loader.load();
// pass parameter to node
node.setUserData(parameter);
return node;
} catch (IOException e) {
throw new MoisException("can't load the file: " + resource, e);
}
}
and the ParameterAware:
public interface ParameterAware {
void setParameter(T param);
}