[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 

Forum Read-Only! Check the new site and forum here!

Messages posted by: YkyMatt  XML
Profile for YkyMatt -> Messages posted by YkyMatt [229] Go to Page: 1, 2, 3  ...  14, 15, 16 Next 
Author Message
1 - Jéferson Cristiano Flores
2 - Um ano e meio
3 - Um ano e alguns meses
4 - Nenhum
5 - A simplicidade, a flexibilidade e o dinamismo das atualizações
6 - Não sei dizer agora
7 - Não sei dizer agora
8 - Por ora, nada

cassioso wrote:
Pergunta bem básica...

Onde ficam minhas páginas jsp neste projeto? em que diretório? como o mentawai sabe que elas estão lá? como faço para quando a url http://localhost:8080/MentaNews/ for invocada, a aplicação seja direcionada para a página inicial?

 


A página inicial tu configuras diretamente no web.xml.

Pesquise pelo atributo welcome-file-list.

rodrigo.avila wrote:

YkyMatt wrote:

rodrigo.avila wrote:
Suponto que o nome do seu projeto no tomcat é meuprojeto, tenta assim, e diz se dá certo:

Code:
 ActionConfig startAction = new ActionConfig("/Start", StartAction.class);
 addActionConfig(startAction);
 


E acessa com essa URL:
http://localhost:8080/meuprojeto/core/Start 


Mas cara, foi a primeira tentativa que fiz. 


Eu vi... o que eu achei estranho é a URL que você usou para acessar:

Code:
http://localhost:8080/net.sigecom.webinfoservice/core/Start


Por acaso net.sigecom.webinfoservice é o nome do seu contexto no tomcat? Se for, já tentou usar um nome mais simples? 


Sim, cara, é o nome do contexto. Preferi colocar assim porque essa aplicação tem referência a um sistema desktop feito em outra linguagem que compartilha o mesmo banco de dados da aplicação. Uma vez que o programa é comercial e a aplicação web corresponde a um módulo separado do sistema desktop e, além disso, a aplicação web faz parte de um conjunto de outros contextos relacionados entre si, usar o nome do pacote como contexto facilita a identificação da aplicação que está sendo acessada. Além do mais, será uma aplicação interna, o contexto não necessita seguir nenhuma especificação/solicitação do cliente. Ah! E esse contexto sempre foi assim, funcionando. Os problemas começaram quando resolvi migrar para o novo Controller (que parece já estar, agora, 100% funcional).
Hmmm... estranho. Eu baixei ontem o beta JAR (lembra que você disse que tinha atualizado o esquema no RequiredRule?). Então... baixei ontem o beta JAR.

E eu tenho certeza sempre de estar usando o JAR mais atual porque eu não uso IDE. Eu compilo e empacoto as coisas ali e quando a lib do Mentawai é atualizada eu simplesmente vou lá, substituo o JAR e carrego o Tomcat. Não há muita possibilidade haver cache.

Vou testar e assim que possível posto aqui uma resposta.

Valews.

rodrigo.avila wrote:
Suponto que o nome do seu projeto no tomcat é meuprojeto, tenta assim, e diz se dá certo:

Code:
 ActionConfig startAction = new ActionConfig("/Start", StartAction.class);
 addActionConfig(startAction);
 


E acessa com essa URL:
http://localhost:8080/meuprojeto/core/Start 


Mas cara, foi a primeira tentativa que fiz.

Se você ver no primeiro post desse tópico, eu cito que tentei de 3 formas:

Code:
 /Start
 /core/Start
 Start
 


Mas de nenhuma maneira funcionou.
Estou tendo uns problemas ao usar o PrettyURLController.

Basicamente o que quero saber é: o que deve ir no primeiro parâmetro String no construtor ActionConfig( String, Class<?> )?

Meu web.xml está assim:

Code:
   <servlet>
     <servlet-name>Controller</servlet-name>
     <servlet-class>org.mentawai.core.PrettyURLController</servlet-class>
     <load-on-startup>1</load-on-startup>
     <init-param>
       <param-name>applicationManager</param-name>
       <param-value>net.sigecom.webinfoservice.ApplicationManager</param-value>
     </init-param>
     <init-param>
       <param-name>autoView</param-name>
       <param-value>true</param-value>
     </init-param>
   </servlet>
 
   <servlet-mapping>
     <servlet-name>Controller</servlet-name>
     <url-pattern>/core/*</url-pattern>
   </servlet-mapping>
 


No meu AppManager, fiz de várias formas e as cito em seguida:

Primeiro tentei assim:

Code:
 ActionConfig startAction = new ActionConfig("/Start", StartAction.class);
 addActionConfig(startAction);
 


Quando tentei acessar http://localhost:8080/net.sigecom.webinfoservice/core/Start, obtive a excessão:

Code:
 javax.servlet.ServletException: Exception while invoking action Start: javax.servlet.ServletException: Could not find action for actionName:  / org.mentawai.core.ConsequenceException / Could not find action for actionName:  / javax.servlet.ServletException
 	org.mentawai.core.Controller.service(Controller.java:555)
 	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 


Então tentei fazer assim:

Code:
 ActionConfig startAction = new ActionConfig("/core/Start", StartAction.class);
 addActionConfig(startAction);
 


E obtive a excessão:

Code:
 javax.servlet.ServletException: Could not find action for actionName: Start
 	org.mentawai.core.Controller.service(Controller.java:445)
 	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 


Então tentei de outra forma:

Code:
 ActionConfig startAction = new ActionConfig("Start", StartAction.class);
 addActionConfig(startAction);
 


E a excessão foi novamente:

Code:
 javax.servlet.ServletException: Exception while invoking action Start: javax.servlet.ServletException: Could not find action for actionName:  / org.mentawai.core.ConsequenceException / Could not find action for actionName:  / javax.servlet.ServletException
 	org.mentawai.core.Controller.service(Controller.java:555)
 	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
 


O que está errado?
Sim, heidermatos, afinal, você está utilizando Annotations para armazenar informações acerca do Bean, logo, essas informações são fixas, pois acho que as Annotations não são editáveis em tempo de execução (posso estar falando asneira).

Se você quiser usar Annotations para indicar o nome da tabela, acredito que sim, terá de ter um VO para cada Filial.

OBS.: não recomendo o uso de Annotations.

saoj wrote:

Tem razão... Já corrigi esse filtro... Pega do beta o novo mentawai jar.

Agora só para confirmar: no caso de POST o tratamento dos parametros é normal e os parametros estarão no input da action com seus respectivos nomes.

 


Excellent!

Mentawai running at all!

OBS.: achei muito boa essa idéia do URL Rewriting (acho que o PrettyController é isso, não é?). Pois eu costumo usar nomes lógicos para meus parâmetros, exemplo: ${contextPath}/Equipments.viewDetails.mtw?equipment.id=5

Embora fique uma URL "organizada", fica muito óbvio para o usuário "o que" eu estou passando como parâmetro. Usando o novo Controller é possível disfarçar bem os parâmetros.
Ah..... acho que encontrei o problema.

Bom... primeiro eu me liguei que o formulário está sendo "postado", logo, não existem parâmetro para o Pretty...Filter capturar.

Removi o filtro e funcionou normalmente.

Então, agora, só acho que está faltando um tratamento no Pretty...Filter para ele não lançar essa NPE. Provavelmente o filtro está pegando um valor na "queryString" e não está verificando se o parâmetro existe. No meu caso, eu enviava os dados via POST e mandava o Pretty...Filter pegar 2 parâmetros na URL que não existiam, por isso a NPE.
Cara, muito estranho mesmo.

Porque acabei de olhar o web.xml pra garantir que está perfeito. Apaguei o conteúdo da pasta work do Tomcat. Reiniciei o server.

A URL carrega normal, mostrando que o novo mapeamento está funcionando corretamente. O formulário é postado para a URL correta (já que a excessão é lançada já na execução do request).

O que tem na linha 58 do PrettyURLParamFilter?
Ah... realmente. Eu não havia percebido isso.

Minha URL? Bom... quando carrega a aplicação, a URL é:

${host}/${contextPath}/mtw/Start e o formulário é postado para ${host}/${contextPath}/mtw/Login. Seria isso?

saoj wrote:

Vc não deve ter setado corretamente o PrettyURLController... 


saoj, não imagino aonde esteja o problema, uma vez que a configuração é bem simples.

Substitui a classe do Controller no web.xml, ficando assim:

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


Bem como o mapeamento:

Code:
   <servlet-mapping>
     <servlet-name>Controller</servlet-name>
     <url-pattern>/mtw/*</url-pattern>
   </servlet-mapping>
 


Minha ActionConfig ficou assim:

Code:
       ActionConfig loginAction = new ActionConfig(DEFAULT_ACTION_PATH + LOGIN_ACTION, LoginAction.class);
       loginAction.addFilter(new PrettyURLParamFilter("user.username", "user.password"));
       loginAction.addFilter(new VOFilter(WebUser.class, "user", true, "user"));
 


Quando dou o submit no formulário:

Code:
  Exception: java.lang.NullPointerException
 
 Message:
 org.mentawai.filter.PrettyURLParamFilter.filter(PrettyURLParamFilter.java:58)
 org.mentawai.filter.PrettyURLParamFilter.filter(PrettyURLParamFilter.java:58)
      org.mentawai.core.InvocationChain.invoke(InvocationChain.java:116)
      net.ym.util.mentawai.filters.QueryExecutorFilter.filter(QueryExecutorFilter.java:48)
      org.mentawai.core.InvocationChain.invoke(InvocationChain.java:116)
      org.mentawai.filter.RedirectAfterLoginFilter.filter(RedirectAfterLoginFilter.java:52)
      org.mentawai.core.InvocationChain.invoke(InvocationChain.java:116)
      org.mentawai.filter.DIFilter.filter(DIFilter.java:206)
      org.mentawai.core.InvocationChain.invoke(InvocationChain.java:116)
      org.mentawai.filter.IoCFilter.filter(IoCFilter.java:83)
      org.mentawai.core.InvocationChain.invoke(InvocationChain.java:116)
      org.mentawai.filter.ConnectionFilter.filter(ConnectionFilter.java:80)
      org.mentawai.core.InvocationChain.invoke(InvocationChain.java:116)
      org.mentawai.filter.ValidatorFilter.filter(ValidatorFilter.java:150)
      org.mentawai.core.InvocationChain.invoke(InvocationChain.java:116)
      org.mentawai.filter.ExceptionFilter.filter(ExceptionFilter.java:83)
      org.mentawai.core.InvocationChain.invoke(InvocationChain.java:116)
      org.mentawai.core.Controller.invokeAction(Controller.java:653)
      org.mentawai.core.Controller.service(Controller.java:518)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
      org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
      org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
      org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
      org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
      org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
      org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:852)
      org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:584)
      org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508)
      java.lang.Thread.run(Unknown Source)
 


O que pode estar havendo?
Sim, estou usando o VOFilter com prefixo.

Acho que o problema pode ser de o VOFilter estar antes do PrettyURLParamFilter mesmo.

OBS.: quem lançou a NPE foi o PrettyURLParamFilter. Teoricamente isso não deveria ter nada a ver com o VOFilter, teria?
Achei a idéia bem interessante e já estou fazendo alguns testes.

Entretanto, ao adaptar meu login, tive um pequeno problema (provavelmente algum detalhe que não percebi).

No Login que eu uso, eu possuo na tela dois campos com os nomes:

user.username e user.password

Com a ajuda de um VOFilter, eu não me preocupo em pegar os dados através do input. Eu tenho simplesmente isso:

Code:
 private User user = null;
 
 public String execute()
   {
    if (user.getUsername()) ...
   }
 


Então, resolvi usar o PrettyURLController e o Pretty...Filter.

No Filter coloquei assim:

Code:
 loginAction.addFilter(new PrettyURLFilter("user.id", "user.username"));
 


Resultado: quando submeti o formulário, o filtro lançou uma NPE.

O que estou fazendo de errado?
Para checar o JDBC no caso do MySQL:

Code:
 // primeiro verificamos a versão do Java para saber
 // se há suporta à JDBC 3.0:
 
 char[] javaVersion = System.getProperty("java.version").toCharArray();
 
 if (((int) javaVersion[3]) >= 4) // tem suporte
   {
    // agora verificamos se o driver suporta a JDBC 3.0
    Connection connection = ...;
    DatabaseMetaData databasemd = connection.getMetaData();
     int driverVersion = databasemd.getDriverMajorVersion();
 
     if (driverVersion >= 5) // o driver suporta JDBC 3.0
       {
 
       }
   }
 


Além da performance eu acredito que usar o que o provedor do driver recomenda é o melhor a se fazer (claro, sempre dentro das possibilidades). Além disso, como já citei anteriormente, o método getGeneratedKeys() é denotado na especificação da JDBC, logo, a recuperação de ID's se tornaria transparente às diversas extensões de BeanSession.

Sim, eu tenho usado regularmente o MentaBeans e tenho certo apreço pelo mesmo, pois é um adendo considerável no desenvolvimento de Action's simples de persistência.

Ah, quanto à questão que você citara sobre as versões que os desenvolvedores estão usando: acho que são raríssimos os casos em que um desenvolvedor precisa desenvolver um site usando JDK 1.3, concorda? E quando a JDBC, acredito que nenhum site em desenvolvimento (ou seja, que esteja usando versões atuais do Mentawai) use um driver JDBC que implemente uma versão anterior à JDBC 3.0.
 
Profile for YkyMatt -> Messages posted by YkyMatt [229] Go to Page: 1, 2, 3  ...  14, 15, 16 Next 
Go to:   
Powered by JForum 2.1.6 © JForum Team