<p:fileUpload>
으로 여러 파일을 업데이트하려고합니다. 파일을 업로드 한 후에 잘 작동하는 경로가있는 List를 설정합니다.p : fileUpload 내부 p : 대화 상자에서 @ViewScoped 값이 손실 됨
그런 다음 사용자는 다른 선택적 정보를 입력 한 다음 양식을 제출하기 위해 버튼을 클릭해야합니다.
사용자가 버튼을 클릭하면 public void handleFileUpload(FileUploadEvent event)
에서 수행 된 목록에 대한 모든 정보가 손실됩니다. handleFileUpload
이 처리 될 때
나는, 나는 또한
@javax.faces.view.ViewScoped
를 사용하고 값이 손실되는 이유는 사용자가 버튼을 클릭, 난 이해하지 못하는 경우에만 데이터베이스에 대한 경로를 저장해야 사용자가 화면에 입력 한 내용을 아직 사용할 수 없습니다.
- JSF 2.2
- CDI
- PrimeFaces 5.1
내가 (당신이 충분한 정보가없는 생각하면 그냥 말해)
가 큰 만드는 피하기 위해 아래 코드의 일부를 생략합니다XHTML :
<h:form>
<!-- OMITED -->
<p:dialog>
<!-- OMITED -->
<p:fileUpload fileUploadListener="#{csrBean.handleFileUpload}"
mode="advanced"
skinSimple="true"
cancelLabel="Cancelar"
multiple="true"
auto="false"/>
<!-- OMITED -->
</p:dialog>
<!-- OMITED -->
</h:form>
방법 :
public void handleFileUpload(FileUploadEvent event) {
UploadedFile file = event.getFile();
String normalize = FilenameUtils.normalize("uploads/csr/"
+ csr.getNumero() + "/" + event.getFile().getFileName());
File destino = new File(normalize);
try {
FileUtils.copyInputStreamToFile(file.getInputstream(), destino);
} catch (IOException e) {
e.printStackTrace();
}
CsrOsAnexo anexo = new CsrOsAnexo();
anexo.setCaminho(normalize);
anexo.setOs(csr.getRespostaRecente().getOs());
csr.getRespostaRecente().getOs().getAnexoList().add(anexo);
FacesMessage message = new FacesMessage("Succesful", event.getFile()
.getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, message);
}
디버깅, 나는 csr.getRespostaRecente().getOs().getAnexoList()
모든 아카이브 경로로 가득하지만 최대한 빨리 해당 명령에 의해 호출 된 메소드로 이동 handleFileUpload()
끝으로하고, 그 값이 사라과 값을 볼 수 있습니다 양식이 채워집니다.
완벽하고 매력적인 부적으로 일했습니다. – prabello