Autor |
Mensagem |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 31/07/2007 14:03:40
|
guilherme.pimentel
Template
![[Avatar]](/forum/images/avatar/1ff1de774005f8da13f42943881c655f.jpg)
Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline
|
Vc´s ja pensaram na possibilidade da convesão do bean no lado do servidor para o lado do cliente. A questão é a seguinte eu fiz o seginte codigo:
Code:
public void getCoordenadaZPiezometro(WebRequestContext request,Model model)throws IOException{
Piezometro piezometro = (Piezometro) model.getModelo();
request.getServletResponse().getWriter().println(piezometroService.load(piezometro).getZ().floatValue());
}
nesse caso eu pego somente uma propriedade teria como eu pegar todas as propriedades do bean e no JavaScript eu poderia ver todas as informações do bean ao invez de ter que fazer um metodo para cada atributo. deu pra entender???
|
GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 02/08/2007 11:49:19
|
guilherme.pimentel
Template
![[Avatar]](/forum/images/avatar/1ff1de774005f8da13f42943881c655f.jpg)
Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline
|
Eu fizo seguinte criei um metodo no bean que é o pai de todo mundo:
Code:
@Transient
public String getBeanToJavaScript() throws IOException {
String retorno = "";
try{
String nomeBean = this.getClass().toString().substring(this.getClass().toString().lastIndexOf(".")+1).toLowerCase();
retorno += nomeBean + " = new Object();\n";
Class<? extends Object> classe = this.getClass();
while (classe != null){
retorno += montaScriptBean(nomeBean,classe);
classe = classe.getSuperclass();
}
}catch(Exception e){
throw new IOException(e.getMessage());
}
return retorno;
}
@Transient
private String montaScriptBean(String nomeBean,Class<? extends Object> classe) throws IllegalAccessException, InvocationTargetException {
List<Field> campos = Arrays.asList(classe.getDeclaredFields());
String camposStr = "";
for (Field field: campos){
try{
if (field.getName().indexOf("List")== -1){
String valor = BeanUtils.getProperty(this, field.getName());
if (field.getType().equals(String.class) ){
if (valor == null)valor = "";
camposStr += nomeBean+"."+field.getName()+" = '"+ valor + "';\n" ;
}else if (field.getType().equals(Double.class) ){
//if (valor != null)valor = valor.replace('.', ',');
camposStr += nomeBean+"."+field.getName()+" = "+ valor + ";\n" ;
}else if (field.getType().equals(Integer.class) ){
if (valor != null)valor = valor.replace('.', ',');
camposStr += nomeBean+"."+field.getName()+" = "+ valor + ";\n" ;
}else if (field.getType().equals(Date.class) ){
camposStr += nomeBean+"."+field.getName()+" = "+ valor + ";\n" ;
}
}
}catch(NoSuchMethodException e){}
}
return camposStr;
}
O retorno desse metodo é a segunte string:
Code:
piezometro = new Object();
piezometro.codigo = 'TESTE';
piezometro.descricao = 'TESTE';
piezometro.local = '11111111111111111111111111';
piezometro.tipo = 'A';
...[e todos os outros metodos]
No javaScript tem um metodo eval(str) que interpreta o esta na str como se fosse um codigo JavaScript.
Sendo assim no java script agora eu posso acessar tanto o codigo e a descrição sem ter que fazer dois metodos.
|
GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 02/08/2007 20:13:34
|
rogel.garcia
Xiita
Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline
|
Existe algo parecido com essa funcionalidade em uma versão 'paralela' do neo...
Talvez seja adicionada na próxima versao do neo...
Vc vai colocar na action um código mais ou menos assim:
View.getCurrent()
.setModel(beanModelo)
.setValue("nome");
Esse código acima alteraria o valor nome que está na tela.. de acordo com o valor do bean..
Você pode experimentar usar o View.getCurrent().. na versão atual vc pode executar algumas funcionalidades...
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 02/08/2007 20:14:33
|
rogel.garcia
Xiita
Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline
|
O View.getCurrent() foi criado principalmente para ajax...
E no JSP vc dá um eval da resposta (que é o comportamento padrao da tag <ajax:call.../> )
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 03/08/2007 10:06:49
|
guilherme.pimentel
Template
![[Avatar]](/forum/images/avatar/1ff1de774005f8da13f42943881c655f.jpg)
Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline
|
Tem como vc mostar como eu posso usar esse <ajax:call.../> ???
|
GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 03/08/2007 21:09:33
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Primeiro declare a taglib do ajax.. assim:
Code:
<%@ taglib prefix="a" uri="ajax"%>
depois use assim:
por ex o seu método:
Code:
public void getCoordenadaZPiezometro(WebRequestContext request,Model model)throws IOException{
Piezometro piezometro = (Piezometro) model.getModelo();
request.getServletResponse().getWriter().println(piezometroService.load(piezometro).getZ().floatValue());
}
Code:
<a:call action="getCoordenadaZPiezometro" functionName="ajaxPiezometro" callback="ajaxPiezometroCallback" parameters="javascript:'modelo='+form['modelo'].value"/>
depois o neo gera uma função com o nome que você colocou para chamar o ajax.. no nosso caso é ajaxPiezometro.
ai faz assim:
Code:
<t:property name=xxx onchange=javascript:ajaxPiezometro() ...
ai para controlar a volta.. faz assim:
Code:
function ajaxPiezometroCallback(data){
eval(data);
var x = something;
form['y'].value = x;
}
ai fica a vontade para fazer o que quiser...
teh!>
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/08/2007 09:30:37
|
guilherme.pimentel
Template
![[Avatar]](/forum/images/avatar/1ff1de774005f8da13f42943881c655f.jpg)
Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline
|
A questão é o seguinte eu fiz a seguinte classes:
Code:
package br.com.geoexplore.geoenterprise.geobarragem.ajax;
import java.io.IOException;
import br.com.linkcom.neo.controller.Controller;
import br.com.linkcom.neo.controller.MultiActionController;
import br.com.linkcom.neo.core.web.WebRequestContext;
...
@Controller(path="/geobarragem/AjaxNivelPiezometro")
public class NivelPiezometroAjaxController extends MultiActionController {
PiezometroService piezometroService;
public void setPiezometroService(PiezometroService piezometroService) {
this.piezometroService = piezometroService;
}
public void getCoordenadaZPiezometro(WebRequestContext request,Model modelo)throws IOException{
Piezometro piezometro = (Piezometro) modelo.getModelo();
String teste = piezometroService.load(piezometro).getBeanToJavaScript();
request.getServletResponse().getWriter().println(teste);
}
}
e na pagina eu coloquei esse codigo:
Code:
piezometro = new Object();
function executarAjax(){
if (document.getElementsByName("piezometro")[0].value != '<null>')
sendRequest('<%=request.getContextPath()%>/geobarragem/AjaxNivelPiezometro?modelo='+document.getElementsByName("piezometro")[0].value,'ACAO=getCoordenadaZPiezometro','POST', ajaxCallback, erroCallback);
}
function ajaxCallback(data){
eval(data);
calculaCotaNivelAgua();
}
function erroCallback(request){
alert('Erro no ajax!\n' + request.responseText);
}
Pelo que eu vi no exemplo que vc colocou em nenhum lugar nas tags vc colocou o caminho da classe. Se não tem que colocar o caminho em nenhum lugar onde esse metodo tem que estar??????
|
GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/08/2007 09:46:04
|
rogel.garcia
Xiita
Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline
|
Esse método tem que estar no mesmo controller que carregou a página.. ou vc pode especificar na tag ajax:call um atributo url indicando qual é o controller
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/08/2007 09:59:47
|
guilherme.pimentel
Template
![[Avatar]](/forum/images/avatar/1ff1de774005f8da13f42943881c655f.jpg)
Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline
|
Valeu!!!!
|
GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 08/08/2007 13:38:58
|
guilherme.pimentel
Template
![[Avatar]](/forum/images/avatar/1ff1de774005f8da13f42943881c655f.jpg)
Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline
|
Estou com um problema agora é na acentuação quando eu passo alguma string que tem acentuação ele mostra no Javascript a string toda desconfigurada, vc já viu isso???
|
GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 08/08/2007 20:23:04
|
rogel.garcia
Xiita
Membro desde: 17/04/2007 16:35:03
Mensagens: 275
Offline
|
Sim...
Se vc utilizar o View.getCurrent vc nao terá esse problema...
se vc estiver utilizando o response... vc terá que antes de retornar alguma coisa, escrever
response.setCharacterEncoding("UTF-8");
|
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 10/08/2007 10:28:30
|
guilherme.pimentel
Template
![[Avatar]](/forum/images/avatar/1ff1de774005f8da13f42943881c655f.jpg)
Membro desde: 21/06/2007 15:52:28
Mensagens: 109
Localização: BELO HORIZONTE
Offline
|
Valeu!!!! Funcionou certinho!!!!
|
GUILHERME A. MUNCK PIMENTEL
DESENVOLVEDOR JEE
BRASIL - MINAS GERAIS - BELO HORIZONTE |
|
 |
|