2012-04-11 5 views
0

나는 도저 슬라이더를 사용하여 GUI를 생성합니다. 슬라이더 옆에는 슬라이더의 현재 값을 표시하는 데 사용되는 텍스트 상자가 있습니다.Java 코드에 자바 스크립트 함수의 인수 전달

내가 원하는 것은 슬라이더가 슬라이딩 될 때마다 슬라이더의 현재 값이 텍스트 상자에 표시된다는 것입니다. 다음으로,이 값은 추가 계산에 사용될 것이고 결과는 다른 텍스트 상자에 표시 될 것입니다.

내가 한 일은 dojo 슬라이더 내부에서 슬라이더의 현재 값을 전달하는 javascript 함수를 호출하는 것입니다.

자바 스크립트 함수 내에서 함수의 인수를 함수 내부의 자바 코드로 전달하려고합니다. 인수는 Java 코드에서 계산을 수행하는 데 사용됩니다.

제 문제는 인수를 Java 코드에 전달할 수 없다는 것입니다. 내 질문은 어떻게 할 수 있는가?

<head> 
<script type="text/javascript"> 
dojo.require("dijit.form.Slider"); 
dojo.require("dijit.form.TextBox"); 

dojo.ready(function(){ 
var slider = new dijit.form.HorizontalSlider({ 
name: "slider", 
value: dojo.byId("walluvalueinit").value, 
minimum: 0,  
maximum: 1,  
discreteValues:11, 
intermediateChanges: true, 
style: "width:300px;", 
onChange: function(value){ 
    dojo.byId("walluvalue").value = value; 
    changewalluvalue(value); //CALLING FUNCTION changewalluvalue() 
} 
}, "slider"); 
}); 

</script> 
</head> 

<body class="claro"> 
<jsp:useBean id="beanAnalysis" class="bean.Analysis" scope="application"/> 

<script> 
function changewalluvalue(value){ 
<% 
ExteriorUnheatedGroundLossCalculation eug = new ExteriorUnheatedGroundLossCalculation(); 

    //MORE CALCULATIONS 
    //SET U VALUES PROPERTY IN ExteriorUnheatedGroundLossCalculation 
    eug.setWallUValue(value); //THE ARGUMENT "value" SHOULD BE PASSED HERE 

====more java code===== 
%> 
} 
</script> 

<form id="form1" name="form1" method="post" action=""> 
<tr> 
    <td width="150">Wall U Value</td> 
    <td width="411" align="center" valign="middle"><div id="slider"></div></td> 
    <td width="154" align="center" valign="middle"><label for="walluvalueinit"></label> 
     <input type="text" name="walluvalueinit" id="walluvalueinit" value="${beanAnalysis.wallUValue}"/></td> 
    <td width="152" align="center" valign="middle"><label for="walluvalue"></label> 
     <input type="text" name="walluvalue" id="walluvalue" /></td> 
</tr> 

<td colspan="2" align="center">Transmission Loss</td> 
    <td align="center" valign="middle"><label for="transmissionlossinit"></label> 
     <input type="text" name="transmissionlossinit" id="transmissionlossinit" value="${beanAnalysis.transmissionLoss}"/></td> 
    <td align="center" valign="middle"><label for="transmissionloss"></label> 
     <%--CALCULATION RESULT WILL BE DISPLAYED HERE--%> 
     <input type="text" name="transmissionloss" id="transmissionloss" /></td> 
</form> 
</body> 

답변

0

그것은 당신이 당신의 자바 코드에 값을 전달할 수 AJAX를 사용해야합니다 가능성이 높습니다 : 아래

내가 작성한 코딩입니다. Dojo에는 그런 유틸리티가 있다고 생각합니다. 또한 요청을 처리하고 실제 논리를 수행 할 Java 코드를 계측해야합니다.

+0

답변 주셔서 감사합니다 @bebraw. 시도해 볼게. – user1221330

+0

한 가지 질문 : jsp의 응답을 아약스 호출자에게 어떻게 전달할 수 있습니까? AJAX 튜토리얼에서, 나는 ASP가 사용하는 것으로 나타났습니다 : response.expires = -1 response.write (값) 그리고 PHP는 다음을 사용합니다 : $ responses = $ value; 하지만 jsp 예제를 찾지 못했습니다. jsp에서 어떻게하는지 보여 줄 수 있습니까? – user1221330

+0

안녕하세요. 나는 JSP를 사용하지 않는다. 하지만 원칙은 거의 모든 곳에서 동일합니다. JSP와 관련된 튜토리얼 (http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=580)을 참고하십시오. Dojo로 작업 할 수 있도록 조정하십시오. –

0

JSP의 클라이언트 측 JavaScript가 서버 측 Java 메소드를 호출 할 수 없으므로 작동하지 않습니다. 두 가지 옵션이 있습니다 : (1) 대신 JavaScript로 계산을 구현하거나 (2) 계산을 수행하는 서버 측 서비스에 Ajax 호출을 수행하십시오.

+0

감사합니다. @cebarett, 저는 JavaScript를 먼저 사용해 보겠습니다. – user1221330

+0

한 가지 질문 : jsp의 응답을 아약스 호출자에게 어떻게 전달할 수 있습니까? AJAX 튜토리얼에서 asp는 다음을 사용합니다. response.expires = -1 응답.쓰기 (값) 그리고 PHP는 다음을 사용합니다 : $ responses = $ value; 하지만 jsp 예제를 찾지 못했습니다. jsp에서 어떻게하는지 보여 줄 수 있습니까? – user1221330

0

계산 코드는 필요한 논리/계산을 수행하도록 특별히 설계된 일반 서블릿이어야합니다. JSP 페이지는 HTML 및/또는 직접 렌더링 가능한 컨텐츠를 제공하는 데 가장 적합합니다.

페이지가 제공되면 페이지의 모든 자바 스크립트가 클라이언트/브라우저에서 실행됩니다. 더 이상 Java 구조에 직접 액세스 할 수 없습니다. AJAX를 사용하여 서버와 다시 통신해야합니다. 호출 한 서블릿에 계산 결과가 들어있는 JSON 객체를 반환하도록합니다.

클라이언트 쪽에서 dojo.xhr (Get 또는 Post 버전)을 사용하고 handleAs 속성을 'json'으로 설정하십시오. 예 :

dojo.xhrGet({ 
    // URL to servlet that will do computation for us on the server 
    url: url_to_calc_servlet, 

    // Tell Dojo to handle return value as a JSON string, so dojo will 
    // auto-convert it into an Object. 
    handleAs: 'json', 

    // Specify request parameters to servlet as an object of 
    // name/value pairs. 
    content: { 
sliderValue: XXX 
    }, 

    // Define callback function for dojo to call when servlet returns 
    load: function(response) { 
    // response will be the object your servlet returned 
    // ... access response data and update page accordingly... 
    } 
}); 

dojo.xhr에 대한 자세한 정보는 Dojo 문서를 확인하십시오.

+0

사실, 서블릿을 사용하여이 문제를 해결했습니다. 그러나 나는 당신과 다른 접근법을 사용했습니다. 어쨌든 고맙습니다. – user1221330