Конфигурирование JSF / ICEFaces InputFile программно - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть код InputFile, помещенный в мою форму из кода Java, например:

FacesContext context = FacesContext.getCurrentInstance();

MethodExpressionActionListener meal = new MethodExpressionActionListener(context.getApplication().getExpressionFactory().createMethodExpression(context.getELContext(), "#{mybackingbean.fileUploadEvent}", null,
        new Class[] { ActionEvent.class }));

InputFile inputFile = new InputFile();
inputFile.setAutoUpload(false);
inputFile.addActionListener(meal);
//inputFile.setActionExpression(...) - did not work
//inputFile.setAction(..) - did not work

parent.getChildren().add(inputFile);

Компонент корректно отображается, после нажатия кнопки загрузки браузер отправляет запрос POST, но мой компонент поддержки никогда не уведомляется,Я также попробовал похожие методы setActionExpression и setAction, чтобы связать компонент с моим компонентом, но ничего не происходит.

Есть ли у вас какие-либо идеи, как заставить мой компонент поддержки знать результат загрузки файла?..?

Обновлено

Включение дополнительной регистрации Я вижу, что файл загружен, и это записывается:

2011-12-07 22:12:54,097 UploadServer DEBUG - UploadServer  doLifecycle :: Window00303:j_id117 in form 'Window00303' -> FileInfo: {
  percent=100,
  preUpload=false,
  postUpload=false,
  exception=null,
  fileName=abcchmvw.INI,
  file=[...],
  physicalPath=[...],
  contentType=application/octet-stream,
  size=437,
  status=2
}

Я декомпилировалUploadServer, но не вижу причины, по которой мой actionListener должен вызываться.

1 Ответ

0 голосов
/ 23 декабря 2011

Решением является addActionListener, но главное, что все не удалось, - это не установка идентификатора для компонента с помощью вызова setId()

...