Como não programar

0 respostas
ivolanski

oi meus amigos, segue abaixo um exemplo de como não fazer as coisas…

Acho que esse é o primeiro passo para que eu consiga melhorar :slight_smile:

Abraços

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Sistaxi - Gerar Corrida</title>
<link type="text/css" href="css/autocomplete.css" rel="stylesheet" />
<link type="text/css" href="http://code.jquery.com/ui/jquery-ui-git.css" rel="stylesheet" />
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=true"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.16.custom.min.js"></script>
<script type="text/javascript" src="js/geocode.js"></script>



</head>
<body>
	<%@ include file="/jsp/menuPage.jsp"%>
	
	//ao carregar essa pagina ela recebe um arraylist de clientes automaticamente
	// se usar a forma que mostro abaixo de como ler esse array vc nem precisa recupera-lo do "response" graças ao struts 2
	//agora se quiser recuperar do response e fazer como faria em um javascript, ok o array está no response do mesmo jeito
	//pra não precisar recuperar do response o array pode ser lido  assim:
	// listaCliente[i].{variavel} que quero recuperar ex. nome, id, telefone etc... 
	// listaCliente[i].{nome} recupera o nome na posição i
	//por exemplo listaCorrida[#i].nome recupera o nome do cliente na posição i
	//esta notação estranha pra recuperar é pq uso struts 2 mas na verdade pode ser usada qualquer notação q leia um array
	//o campo de pesquisa abaixo está tosco e faz refresh na pagina
	//deveria poder pesquisar por nome ou telefone e atualizar o form abaixo sem dar refresh
	// se um taxi que estava ocupado ficar livre o operador não vai saber se não der refresh
	
	//inicio do campo pesquisa
	//note que após escolher o cliente no combobox eu aperto em preencher campos que envia o nome do cliente para
	//a url gerarCorrida e passa como parametro funcao=clienteSelecionado
	// a servlet recebe o nome do cliente, faz uma busca no banco por um cliente q tenha aquele nome 
	//(tosco, se dois cliente tiverem o mesmo nome ferrou)
	// a servlet chama esta mesma pagina aqui, mas agora no response 
	//vem as informacoes do cliente selecionado então posso preencher o form com esses dados
	//assim o operador do sistema confirma os dados altera algo que queira e gera a corrida
	

	<s:form action="gerarCorrida" theme="simple">
	//coloca todo os nomes de clientes em uma combobox
		<s:select list="listaCliente.{nome}" name="cliente.nome"
			label="Selecionar Cliente" headerValue="-- Selecione --"
			headerKey="-1" />
			//ao clicar em submit chama a sevlet passando a função clienteSelecionado
			//seria a mesma coisa q gerarCorrida?funcao=clienteSelecionado
		<s:hidden name="funcao" value="clienteSelecionado" />
		<s:submit type="button" label="Preencher campos" theme="simple" />
	</s:form>

//esse form recebe os dados do cliente selecionado no combobox após o refresh da página
//sim, tosco, a página faz refresh
// o campo value="%{cliente.nome} e similares servem pra pegar a informação sem precisar fazer request.getParameter
	<s:form action="gerarCorrida" id="formulario">
		<s:textfield name="cliente.nome" label="Nome" value="%{cliente.nome}" />
	
		<s:textfield id="address" name="cliente.rua" label="Rua" value="%{cliente.rua}" />
		<s:textfield id = "numero" name="cliente.numero" label="Número"
			value="%{cliente.numero}" />
		<s:textfield name="cliente.complemento" label="Complemento"
			value="%{cliente.complemento}" />
		<s:textfield id = "cidade" name="cliente.cidade" label="Cidade"
			value="%{cliente.cidade}" />
		<s:textfield name="cliente.telefone" label="Telefone"
			value="%{cliente.telefone}" />
		<s:textarea name="cliente.observacao" label="Observações do Cliente"
			value="%{cliente.observacao}" />
		<s:textarea name="corridaObservacao" label="Observações da Corrida" />
		<s:hidden id="latitude" name="cliente.latitude" label="Latitude"
			value="%{cliente.latitude}" />
		<s:hidden id="longitude" name="cliente.longitude" label="Longitude"
			value="%{cliente.longitude}" />
		<s:hidden name="funcao" value="gerarCorrida" />
		<s:hidden name="cliente.id" value="%{Cliente.id}" />
		<s:hidden id = "latLong" name="latLong" />
	</s:form>
	//ao enviar este formulario para gerarCorrida?funcao=gerarCorrida
	// a servlet grava a nova corrida no banco, procura por um taxi livre 
	//que esteja próximo ao endereço do cliente graças a calculos que tranformam
	//o endereço do cliente em coordenada e compara com a coordenada de cada taxi 
	//enviada pelo GPS a cada segundo
	// se nao tiver nenhum taxi livre o sistema deve avisar nenhum taxi livre, mas continuar aguardando
	//algum taxista clicar em livre na tela do GPS
    <input type="button" value="Nova Corrida" onclick="codeAddress()">


//sempre que o gerarCorrida é chamado, independente da funcao passada
//ele tbm sempre retorna um array listaCorrida com os dados atualizados da corrida
// esta tabela tosca não se altera até que a página tenha tido um refresh por algum motivo qualquer
//do usuario ter apertado F5 ou ter gerado uma nova corrida
//o funcionamento desse array com struts 2 é exatamente igual o caso do cliente
	<table border=3 align="center">
		<tr>
			<th colspan=3 align="center">
				<h1>Corridas Ativas</h1></th>
		</tr>
		<tr>
			<th align="center">Cliente</th>
			<th align="center">RT</th>
			<th align="center">Ação</th>

		</tr>
		<s:iterator value="listaCorrida">
			<tr>
				<td width="33%" align="center"><s:property value="cliente.nome" />
				</td>
				<td width="33%" align="center"><s:property value="taxi.rt" />
				</td>
				<td width="33%" align="center"><s:set name="id"
						value="listaCorrida[#stat.index].id" /> <input name=""
					type="button"
					onclick="parent.location.href='gerarCorrida.action?corrida.id=<s:property value="id" />&funcao=cancelarCorrida' "
					value="Cancelar"></td>

			</tr>
		</s:iterator>

	</table>
</body>
</html>
Criado 11 de outubro de 2011
Respostas 0
Participantes 1