2012-04-21 4 views
5

웹 개발의 새로운 항목입니다. 오류 세부 정보가 포함 된 프롬프트를 표시하는 외부 JavaScript 파일이 있습니다. 함수에 오류 메시지를 전달해야합니다. 서블릿에 contoller를 작성했습니다.서블릿에서 JavaScript의 기능을 호출하는 방법

내 서블릿에서 해당 JavaScript 파일의 기능을 호출하는 방법.

+0

질문에 의미가 없습니다. JavaScript는 사용자 브라우저에서 실행됩니다. 서블릿은 서버에서 실행됩니다. 정말로하고 싶은 일에 대해 다시 생각해보십시오. –

+1

@JBNizet 서블릿에서 JS를 호출 할 수 있다고 생각합니다. 우리는 브라우저에 응답을 보낼 수 있으며 그 자체로 호출 할 스크립트를 만들 수 있습니다. – Ved

답변

5

서블릿에서 Java 스크립트 기능을 호출 할 수 없습니다. 오히려, 당신은 브라우저에

response.getOutputStream().println("[javascript code]");

를 사용하여 자바 스크립트 코드를 인쇄 할 수 있습니다 다음 자바 스크립트 함수는 브라우저에서 실행됩니다.

+0

이것은 나를 위해 작동하지 않습니다 : (그냥 브라우저에서 자바 스크립트를 밖으로 인쇄하고,이 코드의 exdecution 발생합니다. 제발 도와주세요.이 내가 무엇을하고 있는지.이 대답은. ("var에 PS = document.getElementsByClassName (\"메시지 \ ");" \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t + "PS. –

+0

자바 스크립트 코드와 함께 response.getOutputStream()과 같은 스크립트 태그를 사용해야합니다. println (" "); –

2

다음과 같은 방법으로 비슷한 종류의 동작을 얻을 수 있습니다. 응답 자체를 보내는 동안 JS 이벤트를 제공 할 수 있습니다.

PrintWriter out = response.getWriter(); 
out.println("<tr><td><input type='button' name='Button' value='Search' onclick=\"searchRecord('"+ argument + "');\"></td></tr>"); 

그래서 당신은, 검색 버튼을 클릭 JS의 기록 방법은 호출됩니다 검색 할 때.

1

서블릿은 웹 브라우저가 아닌 웹 서버에서 실행되며 JS는 웹 서버가 아닌 웹 브라우저에서 실행된다는 점을 알아야합니다. 정상적인 방법은 서블릿이 요청을 JSP 파일로 전달하는 것이며,이 파일은 웹 서버가 웹 브라우저로 보낸 HTML/CSS/JS 코드를 생성합니다. 궁극적으로 모든 HTML/CSS/JS 코드는 웹 브라우저에서 실행됩니다.

기능적 요구 사항 (다소 이상 함)을 달성하려면 전달 된 JSP가 조건부로 특정 스크립트 호출을 렌더링하도록하십시오.

<c:if test="${not empty errors}"> 
    <script>displayErrors(errors);</script> 
</c:if> 

또는 JSP는 JS 변수로 할당하자 JS 더 그것을 처리 할 수 ​​있도록 예를 들어 당신이 JSON 배열 형식으로 ${errors}으로 오류를 수집하고 설정 한 것으로 가정 JSTL<c:if>으로 다음과 같습니다. 같은 뭔가 : 당신은 단지 당신이 alert() 또는 무언가를 사용하고 있음을 의미 할 수 있다는 메시지를 표시하는 JS를 사용하도록 강요하는 경우 요구 사항에 관해서는

<script> 
    var errors = ${errors}; 

    if (errors.length) { 
     displayErrors(errors); 
    } 
</script> 

은 이상한 것을. 이것은 매우 90이며 사용자에게 친숙하지 않습니다. JSP가 입력 필드 옆에 또는 폼의 맨 위에있는 목록에 HTML을 생성하도록하십시오. Our servlets wiki page에는 hello world 예제가 있습니다.

관련 문제