Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 如何覆盖ICEfaces中的默认文件上载h:message_Jsf_Jsf 2_Icefaces_Icefaces 2 - Fatal编程技术网

Jsf 如何覆盖ICEfaces中的默认文件上载h:message

Jsf 如何覆盖ICEfaces中的默认文件上载h:message,jsf,jsf-2,icefaces,icefaces-2,Jsf,Jsf 2,Icefaces,Icefaces 2,我正在使用ace:fileEntry组件上载文件 成功上传后,我收到一条信息: 'File Entry' uploaded successfully 'filename'. 我想覆盖这个消息并显示其他消息(某种用于解析上传文件的摘要),你知道怎么做吗 这是我的密码: <h:form> <ace:fileEntry id="fileEntryComp" label="File Entry" relati

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

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

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

您可以查看showcase:

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

应用
EN
这可以通过所有Icefaces默认消息完成…

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

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

如果我正在使用FileEntryCallBack实例(如此处所示):我希望在结束消息中添加一条摘要消息?我们尚未使用该消息,因此我无法确定。啊,在这里的完整教程中找到了它:嗯,有一种情况,我在按钮旁边显示了新消息,它会继续显示旧的默认消息,但不在表单中!!!!IIRC我们使用了ice:form和ice:messages,但我不确定这是否有区别。