Dúvida com ExtTLD ou ExtJS + Struts2

6 respostas
Flasoft

Pessoal alguém já utilizou ExtTLD ou ExtJS com Struts2?
Não estou conseguindo invocar as actions de maneira correta.

É executado os métodos da action mas não sou direcionado para outra pagina.

O código com TLD ficou:
<ext:body>
		<ext:window title="NetAnalyse - Login" 
					width="300" 
					height="240" 
					id="wLogin"
					closable="false"
					resizable="true">
			<ext:form.formPanel id="loginForm"
								bodyStyle="padding:10px"
								border="false"
								url="login!checkLogin.action"
								
								>
				<ext:form.textField fieldLabel="Username" name="username" />
				<ext:form.textField fieldLabel="Password" name="password" />
				<ext:button type="submit" onClick="loginForm.form.submit()" text="Entrar"/>
			</ext:form.formPanel>
		</ext:window>
	</ext:body>
Com JS ficou:
Ext.onReady(function(){
    wLogin = new Ext.Window({
        id:'wLogin',
        title:'NetAnalyse - Login',
        height:240,
        closable:false,
        width:300,
        resizable:true,
        items:[
            new Ext.form.FormPanel({
                bodyStyle:'padding:10px',
                id:'loginForm',
                border:false,
                url:'login!checkLogin.action',
                items:[new Ext.form.TextField({
                    name:'username',
                    value:'',
                    fieldLabel:'Username',
                    listeners:{
                    }
                }),new Ext.form.TextField({
                        name:'password',
                        value:'',
                        fieldLabel:'Password',
                    listeners:{
                    }
                })],
                buttons:[
                    new Ext.Button({
                        text:'Entrar',
                        type:'submit',
                        listeners:{
                                    click:function(){loginForm.form.submit()}
                        }
                    })
                ],
                listeners:{
                }
            })
        ],
        listeners:{
        },
        contentEl:'wLoginEl'
    });
})

Alguém sabe como posso pegar os dados do response e jogar dentro de uma div e/ou ser direcionado para esta pagina?

A imagem abaixo é do firebug me mostrando o conteúdo do response: Este fonte é da pagina cujo o struts está configurado para me redirecionar.

6 Respostas

antoniopopete

Flasoft:
Pessoal alguém já utilizou ExtTLD ou ExtJS com Struts2?
Não estou conseguindo invocar as actions de maneira correta.

.


Você conseguiu resolver o problema?
Estou tendo um erro org.apache.jasper.JasperException: /WEB-INF/tags/ext/body.tag(98,0) The absolute uri: http://java.sun.com/jsp/jstl/functions cannot be resolved in either web.xml or the jar files deployed with this application

renatocustodio
Flasoft:
Pessoal alguém já utilizou ExtTLD ou ExtJS com Struts2? Não estou conseguindo invocar as actions de maneira correta.

É executado os métodos da action mas não sou direcionado para outra pagina.

O código com TLD ficou:
<ext:body>
		<ext:window title="NetAnalyse - Login" 
					width="300" 
					height="240" 
					id="wLogin"
					closable="false"
					resizable="true">
			<ext:form.formPanel id="loginForm"
								bodyStyle="padding:10px"
								border="false"
								url="login!checkLogin.action"
								
								>
				<ext:form.textField fieldLabel="Username" name="username" />
				<ext:form.textField fieldLabel="Password" name="password" />
				<ext:button type="submit" onClick="loginForm.form.submit()" text="Entrar"/>
			</ext:form.formPanel>
		</ext:window>
	</ext:body>
Com JS ficou:
Ext.onReady(function(){
    wLogin = new Ext.Window({
        id:'wLogin',
        title:'NetAnalyse - Login',
        height:240,
        closable:false,
        width:300,
        resizable:true,
        items:[
            new Ext.form.FormPanel({
                bodyStyle:'padding:10px',
                id:'loginForm',
                border:false,
                url:'login!checkLogin.action',
                items:[new Ext.form.TextField({
                    name:'username',
                    value:'',
                    fieldLabel:'Username',
                    listeners:{
                    }
                }),new Ext.form.TextField({
                        name:'password',
                        value:'',
                        fieldLabel:'Password',
                    listeners:{
                    }
                })],
                buttons:[
                    new Ext.Button({
                        text:'Entrar',
                        type:'submit',
                        listeners:{
                                    click:function(){loginForm.form.submit()}
                        }
                    })
                ],
                listeners:{
                }
            })
        ],
        listeners:{
        },
        contentEl:'wLoginEl'
    });
})

Alguém sabe como posso pegar os dados do response e jogar dentro de uma div e/ou ser direcionado para esta pagina?

A imagem abaixo é do firebug me mostrando o conteúdo do response: Este fonte é da pagina cujo o struts está configurado para me redirecionar.

Isso acontece porque ele invoca a action por padrão via ajax.
Vc tem duas alternativas: desligar o ajax. Esqueci qual é a propriedade mas é fácil achar na documentação, é uma propriedade do form.
A outra é pegar o resultado no success e fazer o que precisar com ele. Dá uma olhada com calma na documentação da classe Ext.FormPanel e da Ext.Ajax.... Com isso vc consegue fazer o que ta querendo.

gugaa_df

Cara eu nao consigo utilizar o ExtTLD? eu só coloco os .tag que nem fala no site, mas quando eu importo no meu JSP da um erro na hora da execução.
org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: 8 in the generated java file
Only a type can be imported. org.apache.commons.beanutils.BeanUtils resolves to a package

An error occurred at line: 187 in the jsp file: /WEB-INF/tags/ext/body.tag
BeanUtils cannot be resolved

renatocustodio

Como a própria mensagem diz ele não está encontrando a classe BeanUtils. Vc precisa baixar os jars dela, acho que é a commons-beanutils. Digitando esse nome vc deve achar no google.

Aliás acho que precisa de outro ainda. Não me lembro qual é agora, mas se vc olhar no site do exttld onde faz o download, vai ver que ele fala que precisa dessa beanutils e da outra que esqueci o nome. Com o nome em mãos é bem fácil de achar o site pra download no google.

gugaa_df

Quando cheguei em casa e olhei com calma resolvi o problema, é exatamente o que falou, eu coloquei os JARS e funcionou.
Agora minha dúvida é outra, no EXTLD eu exibo perfeitamente uma janela, mas eu nao sei como faço para renderizar na página um formPanel.
Com o ExtJS eu sei fazer perfeitamente.

renatocustodio

Vc precisa colocar o conteúdo dentro de um ext:body e talvez um ext:viewport, ficando mais ou menos assim:

<ext:body>
   <ext:viewport>
       <ext:panel>
               Qualquer outra coisa dentro do panel....
       </ext:panel>
   </ext:viewport>
</ext:body>

Segue o exemplo de uma página minha chamda layout.jsp que uso o exttld e algumas tags do sitemesh.

<?xml version="1.0" encoding="utf-8" ?>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="utf-8"%>
<%@ taglib tagdir="/WEB-INF/tags/ext" prefix="ext" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator"
	prefix="decorator"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page"
	prefix="pages"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<%@page import="java.util.Date"%><html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
	<title>Supram Software 2008 - <decorator:title default="Bem Vindo!" /></title>
	<decorator:head />
	<link rel="stylesheet" type="text/css" href="js/ext-2.0.2/resources/css/ext-all.css" />
	<link rel="stylesheet" type="text/css" href="css/estilo.css"/>
	<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
	<script type="text/javascript" src="js/ext-2.0.2/adapter/ext/ext-base.js"></script>
	<script type="text/javascript" src="js/ext-2.0.2/ext-all.js"></script>	
	<script type="text/javascript" src="js/ext-2.0.2/source/locale/ext-lang-pt_BR.js"></script>
	<script type='text/javascript' src='scripts/shortcut.js'></script>
	<script type="text/javascript" src="scripts/geral.js" ></script>
	
</head>
<body>
<input type="hidden" value="Supram Software - <decorator:title/>" id="titulo"/>

<ext:body smProvider=" " loadingMask="true" locale="pt_BR">
    <ext:viewport style="width: 800px; margin: auto">
        <ext:panel title="Supram Software 2008" id="panelTitulo">
            <ext:toolbar>
                <ext:toolbar.button text="Cadastro">
                    <ext:menu>
                        <ext:menu.item text="Cadastro Básico">
                            <ext:menu>
                                <ext:menu.item text="Pessoa">
                                    <ext:menu>
                                        <ext:menu.item text="Bairro" href="BairroAction.action"/>
                                        <ext:menu.item text="Cidade" href="CidadeAction.action"/>
										<ext:menu.item text="Grupo de Usuário" href="GrupoUsuarioAction.action"/>
                                        <ext:menu.item text="Tipo Pessoa" href="TipoPessoaAction.action"/>
                                    </ext:menu>
                                </ext:menu.item>    
                                <ext:menu.item text="Protocolo Documento">
                                    <ext:menu>
                                        <ext:menu.item text="Espécie Documento" href="EspecieDocumentoAction.action"/>
                                    </ext:menu>
                                </ext:menu.item>    
                            </ext:menu>    
                        </ext:menu.item>    
                        <ext:menu.separator />
                        <ext:menu.item text="Pessoa" href="PessoaAction.action"/>
                        <ext:menu.item text="Protocolo Documento" href="ProtocoloDocumentoAction.action" />
                        <ext:menu.separator />
                        <ext:menu.item text="Sair do Sistema" href="LogonAction!logoff.action"/>
                    </ext:menu>
                </ext:toolbar.button>
                <ext:toolbar.button text="Opções">
                    <ext:menu>
                        <ext:menu.item text="Configuração Empresa" href="ConfiguracaoEmpresaAction.action"/>
						<ext:menu.item text="Gerar Valores Padrões do Banco de Dados" href="geraValoresPadrao.jsp"/>
                    </ext:menu>
                </ext:toolbar.button>
            </ext:toolbar>
			<decorator:body></decorator:body>
        </ext:panel>
    </ext:viewport>
	<ext:panel renderTo="rodaPe">
		<ext:toolbar autoHeight="true">
			<ext:toolbar.button text="Usuário Logado: ${usuario.pessoa.razaoSocial}"/>
		</ext:toolbar>
	</ext:panel>
</ext:body>

<ext:onReady>
	Ext.getCmp('panelTitulo').setTitle(document.getElementById('titulo').value) ;
</ext:onReady>
<div id="rodaPe"></div>
</body>
</html>

Detalhe: No seu caso pode não precisar da declaração dos javascripts e css no head. No meu caso é que tive que alterar algumas coisinhas…

Criado 20 de fevereiro de 2008
Ultima resposta 27 de ago. de 2008
Respostas 6
Participantes 4