Как да замените 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>

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 /display/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
„File Entry“ успешно качи „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