Gostaria de saber como posso chamar uma classe/método java de um arquivo .js do Widget.
Construí uma classe de teste
public class TesteHello{
public String mensagem(){
return "Mensagem retornada da classe java";
}
}
No arquivo .js onde tem a função init() e as demais do widget, eu escrevi a chamada:
var c5 = DatasetFactory.createConstraint("DTS_CARGADOCS.idproc", "73", "73", ConstraintType.MUST_NOT);
var constraints = new Array(c5);
var te = new TesteHello(); // Instanciando a classe
var tt = te.mensagem(); // Chamando método e atribuindo a uma variável
Quando executo e printo no console.log, recebo a mensagem dizendo que a classe TesteHello não foi definida
Print da árvore de arquivo abaixo
Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.
Também gostaria de saber como fazer isso! link
Oi Janilson! Creio que a melhor alternativa seria expor um serviço na sua classe Java. No JavaScript, você consultaria esse serviço. Consegue detalhar a sua necessidade por favor? Obrigado!
Eu gostaria de evitar a chamada de WebService. Preciso fazer manipulação em um banco de dados local. Por isso a ideia era criar uma classe Java que tivesse tudo que eu precisava, e aí eu usava os métodos dela no código do meu Widget. Com a classe java eu teria mais poder e mais documentação (já que java tem bastante material). Além do fato de que não haveria mais um serviço/porta disponível.
Entendi! Vou sugerir uma alternativa. Valeu!
Oi Janilson,
Creio que o ideal é criar uma lib com o desenvolvimento java que você comentou - em um projeto separado. Encapsulando em uma lib, é necessário adicionar o .jar compilado no classpath do JBoss (é necessário reiniciar o fluig para carregar sua custom lib).
Feito isso, basta você invocar sua classe, não esquecendo de passar o package todo. Seu código ficaria mais ou menos assim:
var c5 = DatasetFactory.createConstraint("DTS_CARGADOCS.idproc", "73", "73", ConstraintType.MUST_NOT);
var constraints = new Array(c5);
var te = new br.com.acme.TesteHello(); // Instanciando a classe
var tt = te.mensagem(); // Chamando método e atribuindo a uma variável
Para criar sua lib não é nada específico do fluig. Creio que você pode pesquisar na documentação do JBoss.
Abs,
Marcos
Obrigado pela ajuda @Marcos. Fiz exatamente isso. Criei o arquivo jar usando jar cvf testeHello.jar testeHello.class, criei a pasta main no diretório D:\fluig\appserver\modules\com\acme, ficando …\acme\main.
Colei o .jar nessa pasta, criei um arquivo module.xml com o conteúdo
chemei var te = new com.acme.testeHello(); O erro agora é “com is not defined”. Acredito que seja por causa do com do começo.
Se alguém conseguir fazer isso, favor me informar como