[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
DUVIDA - FORM  XML
Forum Index -> Comentários Gerais Go to Page: 1, 2 Next 
Author Message
duque



Joined: 20/03/2010 14:55:10
Messages: 15
Offline

Ola a todos, estou comecando a usar o mentawai e aprendendo jsp.

A duvida e a seguinte, quando coloco o form normal em uma pagina de cadastros, ou seja sem utilizar da tag "mtw" ele apresenta o seguinte erro:

Could not find action for actionName: links/ActCadastrarProduto
ActCadastrarProduto - minha action para cadastrar
links - meu diretorio onde se encontra a pagina de cadastro


caso eu utilize de form com MTW a pagina funciona perfeitamente, porem nao faz o uso do ENCTYPE o qual preciso para realizar upload de imagem.

Agradeco a quem puder me ajudar.
ricardojlrufino


[Avatar]

Joined: 30/03/2008 20:07:28
Messages: 227
Location: Teresina PI
Offline

Da uma olhada em: http://www.mentaframework.org/fileupload.jsp

Ricardo JL Rufino <ricardo.jl.rufino@gmail.com> < UNYK > :: Q4Soft :: Teresina - PI
"Existe apenas um bem, o saber, e apenas um mal, a ignorância" - Sócrates
"Devemos julgar um homem mais pelas suas perguntas que pelas respostas" - Voltaire




Mentawai Developer

[WWW] [MSN]
duque



Joined: 20/03/2010 14:55:10
Messages: 15
Offline

Ja olhei esse link, mas esta retornando o erro o qual mencionei caso eu nao coloque o mtw no form, ja caso eu coloque funciona, porem nao consigo enviar o arquivo, pois a clausula enctype nao funciona no form.

segue meus arquivos.


Classe Action
ActCadastros
Code:
package acts;
 
 import javax.swing.JOptionPane;
 import org.apache.tomcat.util.http.fileupload.FileItem;
 import org.mentawai.core.BaseAction;
 import org.mentawai.rule.RegexRule;
 import org.mentawai.rule.RequiredFieldRule;
 import org.mentawai.rule.RequiredRule;
 import org.mentawai.validation.Validatable;
 import org.mentawai.validation.Validator;
 
 public class ActCadastros extends BaseAction implements Validatable{
 
 
     @Override
     public String execute() throws Exception{
     String nome = input.getString("txtNome");
     String descricao = input.getString("txtDesc");
     double preco = input.getDouble("txtPreco");
     double precoPromo = input.getDouble("txtPrecoPromo");
     int estoque = 0;
     //FileItem foto = (FileItem) input.getValue("txtFoto");
        if (1==1){
            return SUCCESS;
        }else{
            return "ERRO";
        }
     }
 
     public void prepareValidator(Validator val, String string) {
     String fieldClear = "Campo Obrigatorio";
     String nome = input.getString("txtNome");
     String descricao = input.getString("txtDesc");
     double preco = input.getDouble("txtPreco");
     double precoPromo = input.getDouble("txtPrecoPromo");
     //FileItem foto = (FileItem) input.getValue("txtFoto");
 
         val.add("txtNome", new RequiredFieldRule(), fieldClear);
 
         val.add("txtDesc", new RequiredFieldRule(), fieldClear);
         if(precoPromo >= preco && precoPromo != -1){
             addError("Preco Promocional Deve ser menos que o preco do produto!");
         }
 
 
 }
 }


CadastrarProdutoPagina JSP
<%@taglib uri="/WEB-INF/lib/mentawai.jar" prefix="mtw"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<mtw:inputMaskConfig/>
<mtw:inputMoneyConfig/>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250"><style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style></head>
<body>
<table width="540" height="193" border="0" cellpadding="0" cellspacing="0">
<form name="frmActCadastrarProduto" action="ActCadastros.mtw" id="cadastroProdutos" enctype="multipart/form-data"> <tr>
<td width="23" height="61"> </td>
<td width="93"> </td>
<td width="18"> </td>
<td width="91"> </td>
<td width="88"> </td>
<td width="199"> </td>
</tr>
<tr>
<td height="23" colspan="3" valign="top">Codigo do Produto:</td>
<td colspan="2" valign="top"> <mtw:inputText name="txtId" disabled="true"/></td>
<td> </td>
</tr>

<tr>
<td height="21" colspan="3" valign="top">Nome:</td>
<td colspan="2" valign="top"><mtw:inputText name="txtNome"/></td>
<td><mtw:hasError>
<h3><font color="red"><mtw:error field="txtNome" /></font></h3>
</mtw:hasError></td>
</tr>
<tr>
<td height="20" colspan="3" valign="top">Descrição:</td>
<td colspan="2" valign="top"><mtw:inputText name="txtDesc"/> <mtw:hasError>
<h3><font color="red"><mtw:error field="txtDesc" /></font></h3>
</mtw:hasError> </td>
<td></td>
</tr>
<tr>
<td height="21" colspan="3" valign="top">Preço:</td>
<td colspan="2" valign="top"><mtw:inputMoney name="txtPreco" decimals="2" dec_point="." thousands_sep=""/></td>
<td></td>
</tr>
<tr>
<td height="22" colspan="3" valign="top">Preço Promocional:</td>
<td colspan="2" valign="top"><mtw:inputMoney name="txtPrecoPromo" decimals="2" dec_point="." thousands_sep=""/> <font color="#FF0000" size="+2"><mtw:hasError><mtw:error /></mtw:hasError></font></td>
<td></td>
</tr>
<tr>
<td height="24" colspan="3" valign="top">Estoque:</td>
<td colspan="2" valign="top"><mtw:inputText name="txtEstoque"/></td>
<td></td>
</tr>
<tr>
<td height="23" colspan="3" valign="top">Foto:</td>
<td colspan="2" valign="top"><input name="txtFoto" type="file"/> <mtw:hasError>
<h3><font color="red"><mtw:error field="txtFoto" /></font></h3>
</mtw:hasError> </td>
<td></td>
</tr>
<tr>
<td height="22" colspan="3" valign="top">Em Promoção:</td>
<td colspan="2" valign="top"><input name="chkPromo" type="checkbox" id="chkPromo" value="SIM"/></td>
<td></td>
</tr>
<tr>
<td height="33"> </td>
<td> </td>
<td> </td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="33"> </td>
<td valign="top"><input type="submit" value="Cadastrar"></td>
<td colspan="2" valign="top"><input name="bttLimpar" type="reset" value="Limpar"/>
<td> 
<td>
<tr>
<td height="14"></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</form>
</table>
</body>
</html> 


ApplicationManager
Code:
import org.mentawai.core.*;
 import org.mentawai.filter.FileUploadFilter;
 import org.mentawai.filter.ValidatorFilter;
 import acts.ActCadastros;
 
 
 public class ApplicationManager extends org.mentawai.core.ApplicationManager {
 
     
     @Override
     public void loadActions() {
         // Java style: more verbose and more clear
 
         addGlobalFilter(new ValidatorFilter());
 
         ActionConfig act = new ActionConfig("/ActCadastros", ActCadastros.class);
         act.addConsequence(ActCadastros.SUCCESS, new Forward("/Correto.jsp"));
         act.addConsequence("ERRO", new Forward("/errado.jsp"));
         act.addConsequence(ActCadastros.ERROR, new Forward("/links/CadastrarProduto.jsp"));
         addActionConfig(act); // add this action to the application manager
         // add this action to the application manager
         act.addFilter(new FileUploadFilter());
 
     }
 }
ricardojlrufino


[Avatar]

Joined: 30/03/2008 20:07:28
Messages: 227
Location: Teresina PI
Offline

Tente Usar: act.addFilterFirst(new FileUploadFilter());

Ricardo JL Rufino <ricardo.jl.rufino@gmail.com> < UNYK > :: Q4Soft :: Teresina - PI
"Existe apenas um bem, o saber, e apenas um mal, a ignorância" - Sócrates
"Devemos julgar um homem mais pelas suas perguntas que pelas respostas" - Voltaire




Mentawai Developer

[WWW] [MSN]
duque



Joined: 20/03/2010 14:55:10
Messages: 15
Offline

nao funcionou.

mas o erro pelo que posso perceber esta no form, ja que quando uso o form
<form></form>
funciona nao funciona, dizendo que nao consegue achar a action.

ja caso use o form
<mtw:form></mtw:form>
funciona, porem nao envia arquivos, ja que nao posso colocar o ENCTYPE.
ricardojlrufino


[Avatar]

Joined: 30/03/2008 20:07:28
Messages: 227
Location: Teresina PI
Offline

vc pode usar o <form /> normal e setar o enctype="multipart/form-data".
E adicionar o Filtro de Upload (como primeiro) , basicamente é isso.

Acho que pode ser na validação que ta dando problema, desabilita a validação é testa...

para ver o que esta acontecendo por de baixo dos panos, lá no aplication manager, ativa o debug (setDebugeMode(true)).

Ricardo JL Rufino <ricardo.jl.rufino@gmail.com> < UNYK > :: Q4Soft :: Teresina - PI
"Existe apenas um bem, o saber, e apenas um mal, a ignorância" - Sócrates
"Devemos julgar um homem mais pelas suas perguntas que pelas respostas" - Voltaire




Mentawai Developer

[WWW] [MSN]
duque



Joined: 20/03/2010 14:55:10
Messages: 15
Offline

O erro continua, mas vlw ai por estar tentando me ajuda.


Code:
type Exception report
 
 message 
 
 description The server encountered an internal error () that prevented it from fulfilling this request.
 
 exception 
 
 javax.servlet.ServletException: Could not find action for actionName: links/ActCadastros
 	org.mentawai.core.Controller.service(Controller.java:555)
 	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
 
 
 note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.


IceW0lf


[Avatar]

Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline

Could not find action for actionName: links/ActCadastros

Nao existe essa action ai...

Existe ? Ta configurado no ApplicationManager corretamente.

Leiber Wallace
Voixy ::: Soluções em Telecomunicações
duque



Joined: 20/03/2010 14:55:10
Messages: 15
Offline

Sim esta configurado:
Code:
import org.mentawai.core.*;
  import org.mentawai.filter.FileUploadFilter;
  import org.mentawai.filter.ValidatorFilter;
  import acts.ActCadastros;
  
  
  public class ApplicationManager extends org.mentawai.core.ApplicationManager {
  
      
      @Override
      public void loadActions() {
          // Java style: more verbose and more clear
  
          addGlobalFilter(new ValidatorFilter());
  
          ActionConfig act = new ActionConfig("/ActCadastros", ActCadastros.class);
          act.addConsequence(ActCadastros.SUCCESS, new Forward("/Correto.jsp"));
          act.addConsequence("ERRO", new Forward("/errado.jsp"));
          act.addConsequence(ActCadastros.ERROR, new Forward("/links/CadastrarProduto.jsp"));
          addActionConfig(act); // add this action to the application manager
          // add this action to the application manager
          act.addFilter(new FileUploadFilter());
  
      }
  }


o estranho eh que quando eu coloco o form com mtw chama essa classe, mas qdo coloco SEM o mtw nao chama a classe.

FUNCIONA:
Code:
<mtw:form action="ActCadastros.mtw">


NAO FUNCIONA:
Code:
<form action="ActCadastros.mtw">
ricardojlrufino


[Avatar]

Joined: 30/03/2008 20:07:28
Messages: 227
Location: Teresina PI
Offline

tenta: <form action="/ActCadastros.mtw">

Ricardo JL Rufino <ricardo.jl.rufino@gmail.com> < UNYK > :: Q4Soft :: Teresina - PI
"Existe apenas um bem, o saber, e apenas um mal, a ignorância" - Sócrates
"Devemos julgar um homem mais pelas suas perguntas que pelas respostas" - Voltaire




Mentawai Developer

[WWW] [MSN]
duque



Joined: 20/03/2010 14:55:10
Messages: 15
Offline

ricardojlrufino wrote:
tenta: <form action="/ActCadastros.mtw"> 


Code:
 HTTP Status 404 - /ActCadastros.mtw
 
 --------------------------------------------------------------------------------
 
 type Status report
 
 message /ActCadastros.mtw
 
 description The requested resource (/ActCadastros.mtw) is not available.
 
ricardojlrufino


[Avatar]

Joined: 30/03/2008 20:07:28
Messages: 227
Location: Teresina PI
Offline

vc pode usar o formSkin, que tem um visual já montado

Code:
 	- polo, xClear, xpBlue, xpOliva 
 	<mtw:formSkinConfig skin="xClear"/>
 
 <mtw:formSkin
 			action="AlunoAction.salvar.mtw" 
 			method="POST"
 			name="frmPrincipal" 
 			id="frmPrincipal"
 			caption="Cadastro de Aluno"
 			btnCloseOnclick="window.history.back(-1)"
 			btnCloseTitle="Voltar" 	
 			enctype="multipart/form-data"		
 			>
 

Ricardo JL Rufino <ricardo.jl.rufino@gmail.com> < UNYK > :: Q4Soft :: Teresina - PI
"Existe apenas um bem, o saber, e apenas um mal, a ignorância" - Sócrates
"Devemos julgar um homem mais pelas suas perguntas que pelas respostas" - Voltaire




Mentawai Developer

[WWW] [MSN]
duque



Joined: 20/03/2010 14:55:10
Messages: 15
Offline

continua o mesmo erro, estou achando que posso ter configurado algo errado em meu projeto, irei pedir para um amigo testar as classes e posto o resultado.

resultado com formskin
Code:
type Exception report
 
 message 
 
 description The server encountered an internal error () that prevented it from fulfilling this request.
 
 exception 
 
 javax.servlet.ServletException: Could not find action for actionName: links/ActCadastros
 	org.mentawai.core.Controller.service(Controller.java:555)
 	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
 
 
 note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
 
 
ricardojlrufino


[Avatar]

Joined: 30/03/2008 20:07:28
Messages: 227
Location: Teresina PI
Offline

Isso é configuração no ApplicationManager ...

pode ser que seu web.xml esteja errado !!!

De uma lida em: http://www.mentaframework.org/quick-start.jsp


e verifica se o seu ApplicationManager está na pasta raiz /src
pode ser que ele não esteja sendo carregado. !


Ricardo JL Rufino <ricardo.jl.rufino@gmail.com> < UNYK > :: Q4Soft :: Teresina - PI
"Existe apenas um bem, o saber, e apenas um mal, a ignorância" - Sócrates
"Devemos julgar um homem mais pelas suas perguntas que pelas respostas" - Voltaire




Mentawai Developer

[WWW] [MSN]
duque



Joined: 20/03/2010 14:55:10
Messages: 15
Offline

consegui utilizando a tag EXTRA da seguinte maneira:
<mtw:form action="ActCadastros.mtw" method="POST" extra="enctype='multipart/form-data'">


POREM, agora deu erro para converter o arquivo, sera q nao esta enviando o arquivo?

erro:
Code:
 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 ActCadastros: null / java.lang.reflect.InvocationTargetException / java.lang.String cannot be cast to org.apache.tomcat.util.http.fileupload.FileItem / java.lang.ClassCastException
 	org.mentawai.core.Controller.service(Controller.java:665)
 	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
 
 
 root cause 
 
 java.lang.ClassCastException: java.lang.String cannot be cast to org.apache.tomcat.util.http.fileupload.FileItem
 	acts.ActCadastros.execute(ActCadastros.java:73)
 	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 	java.lang.reflect.Method.invoke(Method.java:597)
 	org.mentawai.core.InvocationChain.invoke(InvocationChain.java:299)
 	org.mentawai.filter.FileUploadFilter.filter(FileUploadFilter.java:201)
 	org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
 	org.mentawai.filter.ValidatorFilter.filter(ValidatorFilter.java:184)
 	org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
 	org.mentawai.core.Controller.invokeAction(Controller.java:763)
 	org.mentawai.core.Controller.service(Controller.java:628)
 	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
 
 
 note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
 
 
Forum Index -> Comentários Gerais Go to Page: 1, 2 Next 
Go to:   
Powered by JForum 2.1.6 © JForum Team