IE缓存并引用h:graphicImage的旧图像

时间:2014-11-25 21:17:02

标签: java html internet-explorer jsf

我有一个使用JSF进行表单提交的Web应用程序。我让用户从列表中选择一个图像,然后填写并提交表单。然后,我使用所选图像和表单输入来使用信息注释图像。然后,我使用带注释的图像处理pdf文件并将其通过电子邮件发送给用户。处理完毕后,我会向用户提供导航回图像选择页面的选项,或者使用相同的图像并返回到表单。这是表单的jsf / html,允许用户导航到他们的新页面:

<h:form id="form" method="post">
    <div>
        <h:commandButton value="images" action="#{artwork.backToArt}"/>
    </div>
    &nbsp;
    <div>
        <h:commandButton value="Form" action="#{artwork.backToForm}"/>
    </div>
    &nbsp;
    <div>
        <h:commandButton value="Upload" action="#{artwork.backToUpload}"/>
    </div>
</h:form>

似乎IE缓存带注释的图像并且无论我的方法调用如何都将这些图像保持显示。

以下是我的方法:

public String backToArt()
{
    log.info("========= Setting back to art page ==========");
    this.backToForm();
    this.selectedValue = "";
    this.resizedArt = "";
    this.backArt = "";
    return "loginSuccess.xhtml";
}

public String backToUpload()
{   log.info("========= Setting back to upload ==========");
    this.backToForm();
    this.selectedValue = "";
    this.resizedArt = "";
    this.backArt = "";
    return "CSVSubmit.xhtml";
}

public String backToForm()
{
    log.info("============ Reseting all variables ==========");

    String temp = null;
    if (this.selectedValue != null)
    {
        temp = this.selectedValue;
        temp=temp.substring(temp.lastIndexOf(Dir.getDir("\\")) + 1, temp.length() - 4);
        this.selectedValue = temp;
    }

    log.info("Setting input variables");
    //set all previous values to blank
    //this.jobNum = "";
    this.quantity = null;
    this.headLine = null;
    this.codeNum = null;
    this.pass = null;
    this.expir = null;
    this.website = null;

    log.info("Setting front art to old image");
    //setting previous images to non-text
    if (temp.length() > 0)
    {
        temp = this.resizedArt;
        temp = "converted" + temp.substring(temp.lastIndexOf(Dir.getDir("\\")),temp.length() - 8) 
+ ".jpg";
        this.resizedArt=temp;

        log.info("Setting back art to old image");
        temp = this.backArt;
        temp = "converted" + temp.substring(temp.lastIndexOf(Dir.getDir("\\")),temp.length() - 8) 
+ ".jpg";
        this.backArt = temp;

        log.info("Deleting old text images");
        //start to delete text images
        File folderOne = new File(Env.textDestOne);
        this.deleteFiles(folderOne);
        File folderTwo = new File(Env.textDestTwo);
        this.deleteFiles(folderTwo);

    }

    log.info("============ Reset Complete ==========");
    return "FormSubmission.xhtml";
}

这些方法会重置输入变量和所选图像,并根据在该页面上按下的按钮删除带注释的图像。查看我的日志记录,会调用并处理这些方法,但不会对图像进行更新。当我处理我的pdf时,正确的图像和输入被输出,但查看的内容仍显示旧的值。这意味着我的值正确存储并正确调用我的方法。当我使用谷歌浏览器取消和重新处理时,图像会正确更新。

使用所有这些信息,我得出结论,IE必须缓存我的图像,而不是使用正确的值更新它们。我不知道如何覆盖它,但我需要以某种方式清除缓存,以便将图像更新为正确的值。

编辑:我注意到当我刷新页面按F5时,图片会更新。不确定这意味着什么。

0 个答案:

没有答案