Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Rhino: Доступ и использование своих Java-классов 
:(
    Опции темы
Andrey1
Дата 29.4.2008, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 27.2.2004
Где: Moscow

Репутация: нет
Всего: 5



В NetBeans есть Java-проект с классом, например, "com.myCompany.package.myClass". 
Как сделать доступным этот класс *.js файле?

Пробую:
    
Код

importPackage(Packages.com.myCompany.package);
var obj = new myClass();

- не работает.
Пишет "ReferenceError: "myClass" is not defined."


--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
ksnk
Дата 29.4.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Тут вам, батенька не Java, а совсем даже JavaScript... Две большие разницы, однако...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Andrey1
Дата 29.4.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 27.2.2004
Где: Moscow

Репутация: нет
Всего: 5



"Scripting Java" придумал не я: http://www.mozilla.org/rhino/ScriptingJava.html
Я лишь хочу это попробовать в деле smile ....


--------------------
Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания.
из сутры помоста шестого патриарха Хуэйнена
PM MAIL WWW ICQ   Вверх
Grig
Дата 2.5.2008, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 809
Регистрация: 29.4.2005
Где: Иркутск

Репутация: 6
Всего: 16



Я юзаю классы через Аякс, затем сервлет:
Код

params.className = "pgo.survey.shp.ShpSaveNoNumChild";
var saveRes = smstsSave2(params);

function smstsSave2(params){
    var xmlDom = new XMLDOM('http://localhost:8080/save', params);
    var error = xmlDom.root.selectSingleNode("//ERROR");
    return new XmlSaveResult(xmlDom);
}

function XMLDOM(url, params) {
    this.isError=false;
    this.XMLDOMDoc=new ActiveXObject("Microsoft.XMLDOM");
    this.XMLDOMDoc.setProperty("SelectionLanguage", "XPath");
    this.root=null;
     this.XMLHttpRequest = (new XHRequest(url, params)).req

try{
//    alert(this.XMLHttpRequest.transport.responseText)
    this.XMLDOMDoc.loadXML(this.XMLHttpRequest.responseText);
       //alert(this.XMLHttpRequest.transport.responseText)
        if (this.XMLDOMDoc.parseError.errorCode != 0) {
           var myErr = this.XMLDOMDoc.parseError;
            this.isError=true;
           alert("Ошибка загрузки данных в XMLDOMDoc \n\n" + myErr.reason);
        }

    if(!this.isError){
        this.root=this.XMLDOMDoc.getElementsByTagName("ROOT")[0]
    } 
} catch(e){}

}

function XHRequest(url, params, errorMsg){
    var req=new ActiveXObject("Microsoft.XMLHTTP");
    this.req=req;
//    this.req.asynchronous = false;
    if (req) {
        req.onreadystatechange =function()
        {
                if(req.readyState == 4 && req.status != 200) {
                    if(errorMsg!=null)
                        alert("Ошибка получения данных с сервера.\n"+
                        errorMsg+
                        "\nXMLHttpRequest.status="+req.status);
                }
        }
        req.open("POST", url, false);
        req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
        req.send(params);
    }
}


теперь сам сервлет, в моем случае save:
Код

package utils.save;

import utils.Str;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintStream;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;

import pgo.auth.Auth;
import log.L;

public class SaveServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        if(!Auth.isAuth(request,response)) return;
        response.setContentType("text/html; charset=windows-1251");
        request.setCharacterEncoding("Cp1251");
        PrintStream out = new PrintStream(response.getOutputStream ());//response.getOutputStream();
        String className = Str.objToStr(request.getParameter("className"));
        SaveResult result =null;
        Class clazz = null;
        try {
            clazz = Class.forName(className);
            try {
                Object object = clazz.newInstance();
                try {
                    Method method = object.getClass().getMethod("run", new Class[] {HttpServletRequest.class});
                    try {
                        result = (SaveResult)method.invoke(object, new Object[] {request});
                    } catch (InvocationTargetException e) {
                        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                    }
                } catch (NoSuchMethodException e) {
                    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                }
            } catch (InstantiationException e) {
                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            } catch (IllegalAccessException e) {
                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
        out.println("<ROOT>");
        if(result!=null){
            L.info(result.getResultXML());
            out.println(result.getResultXML());
        } else {
            out.println("<RESULT><ERROR>\n<MSG>Не найден класс "+className+"</MSG>\n</ERROR></RESULT>");
        }
        out.println("</ROOT>");
    }



    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}






--------------------
        
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.