Dojo Toolkit + Struts 1

1 resposta
E

Olá pessoal,

Estou passando por um novo desafio que está até sufocante. Eu estou tentando fazer um upgrade na ferramenta Dojo que estou usando.

A situação é a seguinte, eu tenho um formulário todo adaptado a tags do struts 1, lá tem um textarea no qual eu vou colocar informações para apresentação.

Eu usava o Dojo 0.3.1 e existia uma função a qual jogava o script por cima do html:textarea e fazer um tipo de replace. Então era possível passar para a action o valor dentro do campo do form corretamente.

Nessa nova versão do Dojo 1.1.0 que estou usando, o jeito de inserir o editor é diferente pacas. O código abaixo mostra como inserir a partir de uma sessão , assim pude usar o Rich Editor, isso graças a uma ajuda de Matthew Russell.

Só que o problema reside agora outro detalhe. Apesar do Editor funcionar, eu não consigo recuperar os dados editados nele. Mesmo tendo colocado uma referência ao id do html:textarea.

Será que alguém já passou por esse problema? Se tiverem idéias ou modos diferentes de resolver, por favor se pronunciem.

Obrigado desde já.

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Editor Demo</title>
  <style type="text/css">
    @import "dojo_1.1.0/dijit/themes/tundra/tundra.css";
    @import "dojo_1.1.0/dojo/resources/dojo.css"
  </style>
  
  <script language="JavaScript" 
        src="funcoes.js" 
        type="text/javascript">
  </script>
    
  <script type="text/javascript" 
          src="dojo_1.1.0/dojo/dojo.js"
          djConfig="parseOnLoad: true">
  </script>
    
  <script type="text/javascript">
    dojo.require("dojo.parser");
  </script>
  
</head>
<body class="tundra">

  <input type="hidden" id="teste" />
  
  <html:form action="/Texto">
    
    
    <html:textarea property="texto" styleId="texto" >
    
    </html:textarea>  

    <script>                                            

      dojo.require("dijit.Editor");
      var ed = new dijit.Editor({id : "Editor"},  "texto");
    </script>

    <html:submit value="Salvar" />
  </html:form>  
  
</body>
</html>

1 Resposta

E

Olá pessoal,

Como ninguém respondeu, eu procurei no forum do Dojo e pude conversar com algumas pessoas com maior conhecimento sobre o dojo e consegui resolver o problema.

Segue os códigos para um versão teste e bem besta do uso do Dojo 1.1.0 com Struts.

---------------------------------------------------------Editor's JSP-----------------------------------------------------------------------------------

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Editor Demo</title>
  <style type="text/css">
    @import "dojo_1.1.0/dijit/themes/tundra/tundra.css";
    @import "dojo_1.1.0/dojo/resources/dojo.css"
  </style>
  
  <script language="JavaScript" 
        src="funcoes.js" 
        type="text/javascript">
  </script>
    
  <script type="text/javascript" 
          src="dojo_1.1.0/dojo/dojo.js"
          djConfig="parseOnLoad: true">
  </script>
    
  <script type="text/javascript">
    dojo.require("dojo.parser");
    dojo.require("dijit.Editor");
  </script>

  <script language="JavaScript">
    function teste(){
      document.getElementById('texto').value = dijit.byId('editor').getValue();
    }
  </script>
  
</head>
<body class="tundra">
  
  <html:form action="/Texto">
    
    <html:hidden property="texto" styleId="texto"/>
    
    <textarea dojoType="dijit.Editor" id="editor"></textarea>

    <html:submit value="Salvar" onclick="teste()"/>
  </html:form>  
  
  
</body>
</html>
---------------------------------------------------------Editor's JSP-----------------------------------------------------------------------------------


------------------------------------------------ Visualization's JSP -----------------------------------------------------------------------------------

<%@ taglib uri="/WEB-INF/c.tld" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Editor Demo</title>
</head>
<body>
    <c:out value="${texto.texto}" escapeXml="false"/>
</body>
</html>

------------------------------------------------ Visualization's JSP -----------------------------------------------------------------------------------


------------------------------------------------------- Struts' Form -----------------------------------------------------------------------------------

import org.apache.struts.action.ActionForm;

public class TextoForm extends ActionForm {
	
	private static final long serialVersionUID = -3308740963726621515L;
	
	private String texto;

	public String getTexto() {
		return this.texto;
	}

	public void setTexto(String texto) {
		this.texto = texto;
	}
}

------------------------------------------------------- Struts' Form -----------------------------------------------------------------------------------


----------------------------------------------------- Struts' Action -----------------------------------------------------------------------------------

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class TextoAction extends Action {
	
	public ActionForward execute (ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response){
		
		System.out.println("I am inside the Action!!");
		
		TextoForm textoForm = (TextoForm) form;
		
		System.out.println("FORM VALUE => "+textoForm.getTexto());
		
		Texto texto = new Texto();
		
		texto.setTexto(textoForm.getTexto());
		
		request.getSession().setAttribute("texto", texto);		
		
		return mapping.findForward("texto");
	}
}

----------------------------------------------------- Struts' Action -----------------------------------------------------------------------------------


---------------------------------------------------------- Bean -----------------------------------------------------------------------------------

public class Texto {
	
	private String texto;

	public String getTexto() {
		return this.texto;
	}

	public void setTexto(String texto) {
		this.texto = texto;
	}	
}

---------------------------------------------------------- Bean -----------------------------------------------------------------------------------


------------------------------------------------- struts-config.xml -----------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
  <data-sources>
  </data-sources>
  
  <form-beans>
    <form-bean 
        name="textoForm" 
        type="teste.TextoForm"/>
  </form-beans>
  
  <global-exceptions>
  </global-exceptions>
  
  <global-forwards>
    <forward 
        name="texto" 
        path="/texto.jsp"/>
  </global-forwards>
  
  <action-mappings>
    <action 
        path="/Texto"
        type="teste.TextoAction"
        name="textoForm"
        scope="request"
        input="/index.jsp"/>
  </action-mappings>
</struts-config>

------------------------------------------------- struts-config.xml -----------------------------------------------------------------------------------

Flwz ai para tds

Criado 4 de julho de 2008
Ultima resposta 7 de jul. de 2008
Respostas 1
Participantes 1