【问题标题】:How to override default file upload h:message in ICEfaces如何覆盖 ICEfaces 中的默认文件上传 h:message
【发布时间】:2012-01-02 06:52:21
【问题描述】:

我正在使用 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>

【问题讨论】:

    标签: jsf jsf-2 icefaces icefaces-2


    【解决方案1】:

    fileEntry.getResults().getFiles() 为您提供 FileInfo 对象的 ArrayList。 如果只上传一个文件,可以通过以下方式获取 FileInfo:

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

    您应该通过以下方式调用 FileInfo 的 updateStatus 方法来覆盖默认消息:

    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);
    

    【讨论】:

      【解决方案2】:

      您必须创建自己的消息并发送。它将覆盖默认消息。这是一种奇怪的行为,但它会起作用。

      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

      【讨论】:

      • 如果我在这里使用 FileEntryCallBack 实例怎么办:wiki.icefaces.org/display/ICE/… 并且我想在结尾消息中添加摘要消息?
      • 我们还没用过那个,所以我不知道。
      • 啊,在这里的完整教程中找到了它:wiki.icefaces.org/display/ICE/…
      • 好吧,有一个案例,我在按钮旁边显示了新消息,它一直显示旧的默认消息,但不在表单中!!!!
      • IIRC 我们使用的是 ice:form 和 ice:messages,但我不确定这是否会有所不同。
      【解决方案3】:

      您可以覆盖 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
      

      确保您的应用程序在 faces-config.xml 和 可见 中定义了 application.properties:

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

      这可以通过所有 Icefaces 默认消息来完成...

      【讨论】:

        猜你喜欢
        • 2017-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-06
        相关资源
        最近更新 更多