아마도 여기에서 확실하지 않은 것이 있지만이 작업을 수행하는 방법을 알아낼 수 없습니다.p : fileupload를 양식 나머지 부분과 함께 제출
텍스트 필드, 하나의 메뉴 선택, 자동 완성, 편집기 및 fileupload 개체가 포함 된 p : 대화 상자가 있습니다. 아이디어는 사용자가 필드에 정보를 입력하고 선택적으로 파일 업로드에 파일을 첨부 한 다음 내 백킹 빈을 호출하는 대화 상자의 제출 버튼을 누르고 일부 처리를 수행하고 그들이 필요로하는 파일을 처리하는 것입니다 . 사용자가 여러 파일을 첨부 할 수 있도록 고급 파일 업 로더를 사용하고 싶습니다. 사용자가 제출 버튼을 누르면 파일 업로드 프로그램을 제외한 모든 데이터가 올바르게 제출됩니다. 업로드 수신기는 절대로 실행되지 않습니다.
나는 온라인 검색 중 일부를 수행하여 wigdetVar.upload() 호출로 업로드를 트리거 할 수 있다고 언급했지만 자바 스크립트 오류가 발생하고 추가 검색을 통해 더 이상 기능을 사용할 수 없음을 알게되었습니다 .
그러면 제출 버튼의 나머지 양식과 함께 파일을 제출할 수 있습니까? 대화 상자의 코드는 다음과 같습니다.
<p:dialog widgetVar="newthreaddialog" modal="true" header="New Thread for #{collaborationBacking.patientName}" dynamic="true"
resizeable="false">
<div class="whitebox">
<h:form id="newthreadform" enctype="multipart/form-data">
<p:panelGrid>
<p:row>
<p:column>
<p:messages/>
<h:outputLabel for="threadtitle" value="Thread Title: "/>
<p:inputText id="threadtitle" label="Thread Title" value="#{newCollabThreadBacking.title}" required="true"/>
</p:column>
<p:column>
<h:outputLabel for="threadtype" value="Type: "/>
<h:selectOneMenu id="threadtype" label="Thread Type" value="#{newCollabThreadBacking.type}">
<f:selectItems value="#{newCollabThreadBacking.typeList}"/>
</h:selectOneMenu>
</p:column>
</p:row>
<p:row>
<p:column colspan="2">
<h:outputLabel for="addressedTo" value="To: "/>
<p:autoComplete id="addressedTo" value="#{newCollabThreadBacking.addressedTo}"
completeMethod="#{newCollabThreadBacking.completeAddress}"
var="practice"
itemValue="#{practice}"
itemLabel="#{practice.name}"
converter="practiceConverter"
forceSelection="true"/>
</p:column>
</p:row>
<p:row>
<p:column colspan="2">
<p:editor value="#{newCollabThreadBacking.content}" label="Message Content" required="true"/>
</p:column>
</p:row>
<p:row>
<p:column colspan="2">
<p:fileUpload widgetVar="uploader" fileUploadListener="#{newCollabThreadBacking.fileUpload}"/>
</p:column>
</p:row>
<p:row>
<p:column colspan="2">
<span class="submit">
<p:commandButton id="submitthread" value="Submit" action="#{newCollabThreadBacking.saveThread}"
oncomplete="newThreadResult(xhr, status, args)"
onclick="uploader.upload();"
process="@form" update="@form"/>
</span>
</p:column>
</p:row>
</p:panelGrid>
</h:form>
</div>
<p:ajax event="close" listener="#{collaborationBacking.reloadThreads}" update="threadtable newthreadform"/>
</p:dialog> <!-- newthreaddialog -->
예, 추가했습니다. 업로드 버튼을 클릭하면 업로드 리스너가 호출되지만 양식이 제출 된 경우에는 호출되지 않습니다. – moneyt
@moneyt 귀하의 백업 빈 코드를 볼 수 있습니까? 범위를 변경하려고 시도하십시오 – fareed
죄송합니다, 그 코드 집합을 떨어 뜨 렸습니다. 대부분이 문제를 해결하기 위해 파일 업 로더를 임시 위치에 자동 업로드 한 다음 양식 제출을 통해 임시 파일을 영구적 인 장소로 이동하게했습니다. 어디서나 버전 관리에 해당 코드의 사본을 가지고 있다고 생각하지 않습니다. 그래도 도와 줘서 고마워. – moneyt