Как переопределить загрузку файла по умолчанию h:message в 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>
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
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);
Вы можете переопределить сообщения Icefaces.
Пакет сообщений по умолчанию (просто чтобы узнать, какое сообщение для ovverride) можно найти в пакете с исходным кодом 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 определен файл face-config.xml и он виден вашим приложением:
<application>
<message-bundle>application</message-bundle>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
</application>
Это можно сделать со всеми сообщениями по умолчанию Icefaces...