2014-06-11 2 views
-2

파일을 업로드하여 post 메소드를 사용하여 java 서블릿에 보내려고합니다. 내 도장은 1.8입니다. 그냥 자바 스크립트 작업을 시작하고 여전히 배울 톤이 있습니다. 가능하다면 나를 바로 잡으세요. 그래서 몇 가지 정의되지 않은 속성이 있습니다 : 레이블, UploaderID 및 사실이라고 생각되는 도조 소스 경로!dojo 업 로더를 서블릿에 사용하는 중 오류

**************** REVISED CODE *************************** 

<!DOCTYPE HTML> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>dojox.form.Uploader</title> 

    <link href="dijit/themes/dijit.css" rel="stylesheet" /> 
    <link href="dijit/themes/claro/Common.css" rel="stylesheet" /> 
    <link href="dijit/themes/claro/form/Common.css" rel="stylesheet" /> 
    <link href="dijit/themes/claro/form/Button.css" rel="stylesheet" /> 
    <link href="dojox/form/resources/UploaderFileList.css" rel="stylesheet" /> 

    <script type="text/javascript" 
     src="//ajax.googleapis.com/ajax/libs/dojo/1.8/dojo/dojo.js" 
    data-dojo-config="parseOnLoad: true, async: true, 
             isDebug: true, 
             packages: [{name: 'dojo', location: '.'}, 
                {name: 'dijit', location: 
                '/dojo/dijit'}, 
                {name: 'dojox', location: 
                 '/dojo/dojox'}, 
                ]"></script> 

    <script> 
     dojo.require("dojo.domReady") 
dojo.require("dijit.form.Button"); 
dojo.require("dijit.Dialog"); 
dojo.require("dijit.form.TextBox"); 
dojo.require("dojox.form.Uploader"); 
dojo.require("dojox.form.uploader.FileList"); 
dojo.require("dojo.parser"); 
}); 
    </script> 
</head> 
<body class="claro"> 
    <form method="post" action="user" id="myForm" enctype="multipart/form-data" > 
     <fieldset style="background-color:lightblue;"> 

      <h1 id="greeting">User Administration</h1> 

    <p>First Name: <input type="text" name="fname" size="20"> 

      LastName: <input type="text" name="lname" size="20"></p>  

      <input class="browseButton" name="uploadedfile" multiple="false" 
      type="file" data-dojo-type="dojox.form.Uploader" label="Select Some File" 
      id="uploader" /> 

      <p><input type="submit" label="Submit" data-dojo-type="dijit.form.Button" /> 
      </p> 

      <div id="files" data-dojo-type="dojox.form.uploader.FileList" 
      uploaderId="uploader"></div> 
     </fieldset> 
    </form>      
</body> 
</html> 
+0

감사 디미트리, 내가 필요한 모든 변경 내용을 수정했습니다. 그러나 제 문제는 모듈이 인식되지 않는다는 것입니다. 필자는 dojo 1.8의 릴리스 버전을 내 WebContent 파일에 파일 시스템으로 가져 왔습니다. 레이블 대신 : 일부 파일을 선택하십시오. 나는 찾아보기를 얻고있다. – user3655096

답변

-1

dojo.js를 올바르게 설정 했습니까? 어떻게 응용 프로그램을 사용하고 있습니까? 컴퓨터에 dojo 소스 파일을 다운로드했거나 원격 서버를 사용 했습니까? 다음과 같이 Google CDN을 사용할 수 있습니다. 또한 dojo 소스를 설정하는 here을 살펴보십시오.

src="//ajax.googleapis.com/ajax/libs/dojo/1.8/dojo/dojo.js" 

@Dmitri 덧글 이외에.
아래 줄을 제거하십시오.

<script> dojoConfig ={isDebug:true, ParseOnLoad: true,};</script> 

다음 줄에서 dojoConfig를 다시 정의하기 때문에. 데이터 도장-설정

<script type="text/javascript" src="dojo/dojo.js" 
     data-dojo-config="async: true,isDebug: true,parseOnLoad: true"></script> 

또한 당신은 아래 전화) 요구에 대한 새로운 AMD 형식을 (사용할 수 있습니다.

dojo.required("dojo.domready") 

dojo.required()

이 존재하지 않고 dojo.require()을해야한다 : 당신의 <script>

첫 번째 줄 :

<script type="text/javascript"> 
require([ 
      "dojo/parser", 
      "dijit/form/Button", 
      "dijit/Dialog", 
      "dijit/form/TextBox", 
      "dojox/form/Uploader", 
      "dojox/form/uploader/FileList" 
      "dojo/domReady!" 
], function (parser, Button, Dialog, TextBox, Uploader, FileList) { 
// now parse the page for widgets 
      parser.parse(); 
// Your code will go here 
}); 
</script> 
+0

WebContent 파일 (eclipse)에 src를 추가했습니다. 그것이 읽히고 있는지 확실하지 않습니다. 이것은 이름을 읽고 업로드 된 파일을 읽을 java servlte의 index.html입니다. 여전히 인식되지 않는 속성을 얻는 중 : lable 및 uploaderId – user3655096

0

나는 여기에 몇 가지 오류를 알아 차리지하고 있습니다. 게다가

, dojo.domready 심지어 모듈하지 않고 dojo.domReady


다음 코드해야합니다 단지 잘못 :

function(parser){ 
    parser.parse(); 
}); 

당신은 아마 사용 된 코드 예제에서 붙여 복사 그러나 AMD는 더 이상 AMD (dojo.require())를 사용하지 않으므로이 코드는 컴파일되지 않습니다.

그러나 실제로는 parseOnLoad 메커니즘을 사용하고 있으므로 페이지를 직접 구문 분석 할 필요가 없습니다. 동일한 위젯을 두 번 구문 분석하기 때문에 오류가 발생합니다.

모든 직장에 부하 메커니즘에 대한 해석을 내리는 데 필요한 코드의 일부를 제거하는 것입니다 :

dojo.require("dojo.parser"); 

일부는 비 -하는 AMD 예를 변환하는 시도를 실패처럼이 코드 보인다 AMD의 코드는, 당신이 잘못하고있는 또 다른 한가지는 : 사전 AMD 코드 (dijit.form.Button)를저기서 때

dojo.require("dijit.form/Button"); 

당신은 점 표기법을 사용해야합니다. Dojo는 아마도 이것을 이해할 것입니다. 적어도 최근의 Dojo 버전에서는 가능할 것입니다. 그러나 이전 버전의 Dojo에서도 작동 할 것입니다.


당신은 예를 들어, 줄 바꿈에 의해 분할 속성 이름을 위치 :

<input class="browseButton" name="uploadedfile" multiple="false" type="file" data- 
    dojo-type="dojox.form.Uploader" 
    label="Select Some File" id="uploader" /> 

속성 이름 아마 한 1 라인을해야한다, 나는 당신이 그 속성을 분할하는 경우 유효 생각하지 않습니다 여러 줄로.


이 장전 페이지를 구문 분석하는 도장 구성 등록 정보는 parseOnLoad (안 ParseOnLoad)입니다. Dojo가 이러한 특성에서 대소 문자를 구분하지 않는지 확실하지 않지만 일반적으로 JavaScript 특성은 대소 문자를 구분합니다.

그러나 실제로는 Dojo를로드하는 <script> 태그에 data-dojo-config 속성을 사용하고 있으므로 실제로 필요하지 않습니다.


이 모든 오류를 수정하는 경우이 바이올린에 볼 수있는 스크립트가 (또는 AMD없이) 잘 작동합니다 : http://jsfiddle.net/e65EY/

관련 문제