Как переопределить загрузку файла по умолчанию h: сообщение в ICEfaces

я использую компонент ace:fileEntry для загрузки файлов, и после успешной загрузки я получаю сообщение, что:

'File Entry' uploaded successfully 'filename'.

и я хочу переопределить это сообщение и отобразить другое сообщение (какое-то резюме для анализа этого загруженного файла), есть идеи, как это сделать?

вот мой код:

<h:form>
        <ace:fileEntry id="fileEntryComp"
               label="File Entry"
               relativePath="uploaded"
               fileEntryListener="#{mybean.uploadFile}"/> 



        <h:commandButton value="Upload Excel File" />
        <h:message for="fileEntryComp" />         

    </h:form>

person Mahmoud Saleh    schedule 20.11.2011    source источник


Ответы (3)


Вы должны создать свое собственное сообщение и отправить его. Это перезапишет сообщение по умолчанию. Странное поведение, но оно будет работать.

public void uploadFile(FileEntryEvent e) {
  FileEntry fe = (FileEntry)e.getComponent();

  FacesContext ctx = FacesContext.getCurrentInstance();
  FacesMessage msg = new FacesMessage();
  msg.setServity(FacesMessage.SERVITY_INFO);
  msg.setSummary("mysummary");
  msg.setDetail("mydetail");
  ctx.addMessage(fe.getClientId(),msg);
}

Вы можете проверить витрину: http://comp-suite.icefaces.org/comp-suite/showcase.jsf?grp=aceMenu&exp=fileEntry

person Udo Held    schedule 20.11.2011
comment
что если я работаю с экземпляром FileEntryCallBack, как здесь: wiki .icefaces.org/display/ICE/ и я хочу, чтобы в конце сообщения было добавлено итоговое сообщение? - person Mahmoud Saleh; 20.11.2011
comment
Мы еще не использовали его, поэтому я не могу сказать. - person Udo Held; 20.11.2011
comment
я нашел это в полном руководстве здесь: wiki.icefaces.org /дисплей/ICE/ - person Mahmoud Saleh; 20.11.2011
comment
хорошо, есть случай, я показываю новое сообщение рядом с кнопкой, и оно продолжает показывать старое сообщение по умолчанию, но не в форме !!!! - person Mahmoud Saleh; 20.11.2011
comment
IIRC мы использовали ice:form и ice:messages, однако я не уверен, имеет ли это значение. - person Udo Held; 20.11.2011
comment
@UdoHeld: как избавиться от сообщения по умолчанию, которое появляется из компонента fileEntry? - person Rachel; 11.04.2012
comment
«Файловая запись» успешно загрузила «test.xml» - person Rachel; 11.04.2012

FileEntry.getResults().getFiles() дает вам ArrayList объектов FileInfo. Если вы загружаете только один файл, вы можете получить FileInfo следующим образом:

FileInfo fileInfo = fileEntry.getResults().getFiles().get(0);

Вы должны вызвать метод updateStatus FileInfo следующим образом, чтобы переопределить сообщение по умолчанию:

fileInfo.updateStatus(new FileEntryStatus() {
    @Override
    public boolean isSuccess() {
        return true;
    }
    @Override
    public FacesMessage getFacesMessage(FacesContext facesContext,
            UIComponent fileEntry, FileEntryResults.FileInfo fi) {
        return new FacesMessage(FacesMessage.SEVERITY_INFO,
                "My success message: " + fi.getFileName(),
                "My success message: " + fi.getFileName());
    }
}, true, true);
person Donato Szilagyi    schedule 13.12.2012

Вы можете переопределить сообщения icefaces.

Пакет сообщений по умолчанию (просто для того, чтобы узнать, какое сообщение нужно переопределить) можно найти в исходном пакете icefaces:

     icefaces3/ace/component/src/org/icefaces/ace/resources/messages.properties

где:

     org.icefaces.ace.component.fileEntry.SUCCESS          = ''{0}'' has successfully uploaded ''{1}''
     org.icefaces.ace.component.fileEntry.SUCCESS_detail   = ''{0}'' has successfully uploaded ''{1}''

и это строки, которые я поместил в свой файл application.properties:

    org.icefaces.ace.component.fileEntry.SUCCESS          = File ''{1}'' caricato correttamente
    org.icefaces.ace.component.fileEntry.SUCCESS_detail   = File ''{1}'' caricato correttamente

убедитесь, что application.properties определены в Faces-config.xml и видимы вашим приложением:

<application>
    <message-bundle>application</message-bundle>
    <locale-config>
        <default-locale>en</default-locale>
    </locale-config>
</application>

Это можно сделать со всеми сообщениями Icefaces по умолчанию...

person venusoft    schedule 20.07.2012