[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Messages posted by: Rodrigo  XML
Profile for Rodrigo -> Messages posted by Rodrigo [32] Go to Page: Previous  1, 2, 3 Next 
Author Message
Pessoal,

Estou com a seguinte dúvida:

Qual é a maneira mais elegante de eu construir uma action para responder a solicitações e mostrar ora via Ajax, ora via jsp?

Por exemplo:

Eu chamaria via browser ActioTeste.listar.mtw?id=1 e quero visualizar o resultado no próprio browser com expression language na página jsp

e em outra página usar requisição via Ajax para o mesmo endereço, no caso, ActionTeste.listar.mtw?id=1


No primeiro exemplo eu colocaria no output da action o seguinte:

output.setValue("produtos", listaProdutos);
return SUCCESS;

Já para retornar para a requisição Ajax teria que ser:

output.setValue(AjaxConsequence.KEY, listaProdutos);
return SUCCESS;


Ou seja, como faço essa distinção na action ou application manager da forma mais elegante?


Eu poderia passar um parametro na chamada da action pra ela saber que deve retorna Ajax, por exemplo:

ActionTeste.listar.mtw?id=1&isAjax=true

e fazer o teste dentro dessa action para dar a saida correspondente...

Ou criar uma outra chamada exclusiva para Ajax, como:

ActionTeste.listarAjax.mtw?id=1

Mas isso duplicaria o código


Alguém tem alguma ideia para me ajudar?

Obrigado

Pessoal,

Estou tentando retornar uma lista de objetos complexos pelo
AjaxConsequence.KEY de minha action, porém, só retorna até um certo nível do objeto...

passei a usar no application manager:

.ajaxOk( new JSONArrayAjaxRenderer())

só que como meu objeto tem um objeto do tipo Calendar, dá o seguinte erro:


#######################################3

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Exception while invoking action Disciplina: Exception while renderizing with render class org.mentawai.ajax.renderer.JSONArrayAjaxRenderer: net.sf.json.JSONException: net.sf.json.JSONException: java.lang.NoSuchMethodException: Property 'actualMaximum' has no getter method in class 'class java.util.GregorianCalendar' / org.mentawai.core.ConsequenceException / Property 'actualMaximum' has no getter method in class 'class java.util.GregorianCalendar' / java.lang.NoSuchMethodException
org.mentawai.core.Controller.service(Controller.java:665)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.lang.NoSuchMethodException: Property 'actualMaximum' has no getter method in class 'class java.util.GregorianCalendar'
org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1327)
org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:770)
org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:846)
org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:426)
net.sf.json.JSONObject.fromBean(JSONObject.java:157)
net.sf.json.JSONObject.fromObject(JSONObject.java:230)
net.sf.json.JSONObject.setValue(JSONObject.java:463)
net.sf.json.JSONObject.fromBean(JSONObject.java:15
net.sf.json.JSONObject.fromObject(JSONObject.java:230)
net.sf.json.JSONArray.<init>(JSONArray.java:387)
net.sf.json.JSONArray.fromCollection(JSONArray.java:127)
net.sf.json.JSONArray.fromObject(JSONArray.java:147)
net.sf.json.JSONObject.setValue(JSONObject.java:455)
net.sf.json.JSONObject.fromBean(JSONObject.java:15
net.sf.json.JSONObject.fromObject(JSONObject.java:230)
net.sf.json.JSONArray.<init>(JSONArray.java:387)
org.mentawai.ajax.renderer.JSONArrayAjaxRenderer.encode(JSONArrayAjaxRenderer.java:49)
org.mentawai.ajax.AjaxConsequence.execute(AjaxConsequence.java:106)
org.mentawai.core.Controller.service(Controller.java:655)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
Apache Tomcat/6.0.20

#######################################



Antes eu estava usando :

.ajaxOk( new JSONGenericRenderer(4));

mas mesmo assim apenas me retornava um objeto json com 3 niveis:


O objeto que deveria retornar seria de 4 niveis:

Eu percebi que fazendo um objeto que tenha como filho lista de outros objetos, ai funciona...Será que é um erro do JSONGenericRenderer(), ou uma necessidade de apenas conseguir construir objetos que tenha lista de objetos em todos os niveis como filhos?


Por favor me ajudem...

Obrigado
Obrigado IceW0lf...


É exatamente o que eu estava precisando...

Me desculpe por ser leigo em templates, apesar de que eu entendo um pouco e até já consegui um bom exemplo aqui em minhas páginas...

Havia me esquecido que eu posso usar jquery, que já estou usando aliás, para fazer um append no meu head em tempo de execução conforme o conteudo que estarei injetando através do template...


Brilhante!

Resolvido meu problema...

Muito obrigado pela dica, mas muito obrigado mesmo...

Valeu!
Pessoal,

Mais uma dúvida!

Estou querendo trabalhar com templates do mentawai, ai tenho a seguinte dúvida:

Quero que a pagina fique dividida como abaixo:

cabeçalho
menu lateral
conteudo
rodapé

Ai crio uma folha de estilos (arquivo .css ) que sirva para o meu template...

Mas quando injeto algo novo no conteudo quero uma folha de estilo (arquivo .css ) exclusiva para esse conteudo...

A pergunta é:

Tem como injetar essa folha de estilo conforme o conteudo da página através do templateManager, ou ela já tem que estar delarada lá no template.jsp onde fica as tags do <head></head>


Será que consegui explicar?


Bom pessoal, fico no aguardo...


Obrigado

Pessoal,

Mais uma vez estou com dificuldades:

Quero fazer uma requisição ajax e quero de retorno um objeto composto:

Exemplo:

Disciplina
|---------> Horario
|---------->inicio
|---------->termino

Disciplina.Horario.inicio


Ou seja, um objeto disciplina que contenha uma lista de horários onde quero pegar o inicio e fim do horario da disciplina

Entao, lá na página, usando mtw.request, seria algo como:

var response = new mtw.response(transport);
var disciplina = null;

for( var index = 0; index < response.size(); index++) {
disciplina = response.getObject(index);
msg = "Disciplina: " + disciplina.codigo;
msg += "\n Descrição: " + disciplina.descricao;
msg += "\n Horario Inicio: " + disciplina.horario(0).inicio;
}


###############

disciplina.horario(0).inicio
disciplina.horario(0).termino
disciplina.horario(1).inicio
disciplina.horario(1).termino


Será que eu consegui esclarece a dúvida?

Se alguem puder me ajudar...


Utilizando o exmplo da página http://forum.mentaframework.org/posts/list/1418.page

dá até p pegar esses beans disciplinas, mas o objeto horario que está dentro de disciplina não é possível, isso usando JSONGenericRenderer() para o AjaxConsequence...

Tem algum outro jeito de se trazer um objeto composto?
Mesmo que seja uma estrutura xml de resposta...Se for assim como eu devo fazer na Action de resposta? Tipo, o que deve ser feito no codigo abaixo:

output.setValue(AjaxConsequence.KEY, listaDeDisciplinas);


No caso essas lista de disciplinas são lista de beans disciplinas compostos


Se puderem me dar uma luz!


Obrigado!
Pessoal, resolvi...

Faltava algumas bibliotecas .jar na lib:

xstream-1.3.jar
ezmorph-0.8.1.jar
commons-logging.jar

Fui adicionando e retirando outras quando chegou nessas 3 últimas percebi que a falta de uma delas fazia com que não obtesse o resultado.

Obrigado mesmo assim!
Obrigado Lobo pela dica...

Consegui retornar uma string, agora fui tentar retornar uma lista de beans como no exemplo, mas tá dando erro...

Até postei um novo tópico p ver se alguem me ajuda novamente...


Se puder me ajudar com isso ficarei mais uma vez agradecido...

Valeu!


Pessoal, estou tentando usar um exemplo do mentawai sobre requisição Ajax mas tá dando o seguinte erro:

"Could not initialize class net.sf.json.JSONObject"


o exemplo é da página:

http://forum.mentaframework.org/posts/list/1418.page

Estou tentando retornar uma lista de beans

No AppManager estou fazendo assim:

ActionConfig acDisciplinaListar =
action("Disciplina",DisciplinaAction.class,"listar")
.on(SUCCESS, new AjaxConsequence(new JSONGenericRenderer()))
.filter(new VOFilter(Disciplina.class, "disciplinaBean"));


Na Action :

public class DisciplinaAction extends BaseAction {

public String listar(){


try{

Connection conn = (Connection) input.getValue("connSirsq");
DisciplinaService disciplinaService= new DisciplinaService(conn);
List<Disciplina> arrayDisciplinas = disciplinaService.listar();
output.setValue(AjaxConsequence.KEY, arrayDisciplinas);
return SUCCESS;

} catch(Exception e){
addError(e.getMessage());
return ERROR;
}
}

}


Na pasta lib que está dentro do WEB-INF tem os seguintes arquivos:

json-lib-0.8.jar
json.jar
mentawai.jar
mysql-connector-java-5.1.8-bin.jar
c3p0-0.9.1.2.jar



Alguém poderia me ajudar?

Por davor...

Obrigado
Olá pessoal,


Gostaria de saber como eu posso retornar uma string simples utilizando ajax com mentawai...

Ou seja fazendo uma requisição ajax e recebendo uma string ou um html como resposta...

A requisição eu sei fazer, estou com problemas na action, application manager...


Obrigado
Pessoal, já resolvi essa parte era a configuração do web.xml

coloquei o caminho correto no init-param como abaixo:

<init-param>
<param-name>TemplateManager</param-name>
<param- value>br.dominio.nomeMeuProjeto.TemplateManager</param-value>
</init-param>


antes estava:


<init-param>
<param-name>TemplateManager</param-name>
<param-value>TemplateManager</param-value>
</init-param>





Mesmo assim agradeço desde já
Olá Pessoal,

Estou com um problema sério...

Estou usando o Eclipse em um projeto do mentawai que onde quero usar "templates", porém, quando eu chamo uma página do tipo .page o eclipse retorna o seguinte erro:

java.lang.ClassNotFoundException: TemplateManager

Já tentei de tudo não vai...

Observação: Tenho dúvidas com relação ao arquivo web.xml, pois o meu está assim:

<servlet>
<servlet-name>TemplateServlet</servlet-name>
<servlet-class>
org.mentawai.template.JspTemplateServlet
</servlet-class>
<init-param>
<param-name>TemplateManager</param-name>
<param-value>TemplateManager</param-value>
</init-param>

</servlet>
<servlet-mapping>
<servlet-name>TemplateServlet</servlet-name>
<url-pattern>*.page</url-pattern>
</servlet-mapping>

Também gostaria de saber se tem que configurar o eclipse de alguma forma, sei lá, build path...

Por favor me ajudem


Obrigado!
Obrigado IceW0lf,

Relamente era problema com os arquivos .class que não estavam sendo re-gerados quando eu alterava os arquivos fontes. Aparentemente o Eclipse estava certinho, mas mesmo assim não funcionava. Passei a apontar o diretório de sída dos .class para outro lugar e depois colocava de volta no diretório que veio junto com o Template.war. Dessa forma resolveu!


t+
Olá pessoal,

Estava fazendo alguns teste e cheguei na seguinte conclusão:

public class TemplateManager extends org.mentawai.template.TemplateManager {

Page base;
Page page;

Public void configurePages() {

base = new Page("template.jsp");
base.setBlock("head", new Page("head.jsp"));
base.setBlock("menu", new Page("menu.jsp"));
add(base);

page = new Page("lista", base); //Extends!
page.setBlock("body", new Page("lista.jsp"));
add(page);


page = new Page("hello", base); //Extends!
page.setBlock("body", new Page("hello.jsp"));
page.setBlock("menu", new Page("menu2.jsp"));
add(page);

}
}

O menu não é redefinido e se eu altero o nome do aqruivo menu.jsp para um nome diferente do nome que está sendo setado para o bloco "menu" tb não funciona mais...

Alguém já teve esse problema

Obrigado
Olá pessoal,

Estou tentando rodar o Template.war como teste mas não funciona, exemplo eu posso tirar a configuração do TemplateManager que ele continua trazendo o template, ai quando eu configuro para extender e redefinir ele não obedece, continua trazendo as mesmas páginas.

Abaixo está o teste que estou fazendo:

Quando chamo a página: listNews.page no browser ele tras o template mas o menu vem com o conteudo da página menu2.jsp mesmo estando comentado.





public class TemplateManager extends org.mentawai.template.TemplateManager {


public void configurePages() {
Page base = new Page(".*", "template.jsp", ConventionController.class);
base.setBlock("head", new Page("head.jsp"));
base.setBlock("menu", new Page("menu.jsp"));
add(base);

Page page = new Page("/listNews", base); //Extends!
page.setBlock("body", new Page("listNews.jsp"));
//page.setBlock("menu", new Page("menu2.jsp")); // continua trazendo o menu2.jsp sendo que lá em cima está definido menu.jsp add(page);
}
}


O template.jsp é este:

<%@taglib uri="/template" prefix="template"%>
<html>
<head>
<title>Mentawai with Templates</title>
</head>
<body>
<table>
<tr><td colspan="2"><template:block id="head"/></td></tr>
<tr>
<td width="25%"><template:block id="menu"/></td>
<td><template:block id="body"/></td>
</tr>
</table>
</body>
</html>


O web.xml é este:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlnssi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<display-name>Hello Mentawai/Templates</display-name>
<description>
Hello Mentawai/Templates
</description>

<servlet>
<servlet-name>Controller</servlet-name>
<servlet-class>org.mentawai.core.Controller</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<!-- You must choose an extension to indicate a mentawai action -->
<servlet-mapping>
<servlet-name>Controller</servlet-name>
<url-pattern>*.mtw</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>TemplateServlet</servlet-name>
<servlet-class>
org.mentawai.template.JspTemplateServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TemplateServlet</servlet-name>
<url-pattern>*.page</url-pattern>
</servlet-mapping>

</web-app>


A estrutura de diretórios eu não mexi tá do jeito que eu baixei do site do mentawai.

Por favor me ajudem se puderem.

Obrigado
Baixei e inslatei o Tomcat versão 6.x e resolveu o problema, talvez o meu Tomcat versão 5.x estava com algum problema não sei!?
 
Profile for Rodrigo -> Messages posted by Rodrigo [32] Go to Page: Previous  1, 2, 3 Next 
Go to:   
Powered by JForum 2.1.6 © JForum Team