p:命令按钮ajax =" false" (使用p:fileUpload)仅在IE中第二次单击时工作

时间:2013-04-10 13:24:57

标签: javascript file-upload jsf-2 commandbutton

我正在使用带有简单模式的primefacas fileUpload(由于某些其他原因,不使用高级模式)。我使用style =“display:none”使fileUpload“隐藏”,然后使用commandbutton添加一个inputText来表示fileUpload(因为通过这种方式我可以更容易地进行设计)。

当用户点击p:commandbutton(浏览)时,我使用javascript调用p:fileUpload 并将所选文件路径更新为inputText。

当我提交表单时,它在firefox和chrome中工作得很好,但需要按两次才能在IE中工作。有谁知道如何解决它?

xhtml页面

<h:form enctype="multipart/form-data" id="formUpload">
  <p:messages globalOnly="true" />
  <div style="display:none">
    <p:fileUpload value="#{testingBean.file}" mode="simple" id="file"/>
  </div>
  <p:inputText id="txtFile" />
  <p:commandButton type="button" value="Browse" onclick="browseAndUpdate()" />

  <p:remoteCommand name="browseAndUpdate" update="@form" onstart="document.getElementById('formUpload:file').click()" />

  <p:commandButton value="Submit" ajax="false" action="#{testingBean.upload}"/>
</h:form>

<script>
  $("input[name='formUpload:file']").change(function() {
    $("input[name='formUpload:txtFile']").val($(this).val());
  });
</script>

支持豆

private UploadedFile file;
public UploadedFile getFile() {  
    return file;  
}  
public void setFile(UploadedFile file) {  
    this.file = file;  
}

public void upload() {
  UploadedFile f = this.getFile();
  if (null == f) {
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("null", " null"));
  } else {
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Succesful", f.getFileName() + " uploaded."));
  }
}

编辑:
我指的是BalusC的帖子commandButton/commandLink/ajax action/listener method not invoked or input value not updated并且相信我的问题是他的观点7。
浏览器文件后,我尝试使用p:remoteCommand更新表单,表单更新,上传按钮能够通过第一次单击提交,但所选文件变为空。
我不知道如何更新fileUpload viewState.anyone可以帮忙吗?


除此之外,我引用了另一个BalusC的回答h:commandButton/h:commandLink does not work on first click, works only on second click,但我不知道需要将这些javascript放到哪里,@ BalusC你可以指导我一下吗?非常感谢..

0 个答案:

没有答案