Struts 2 - passando parametro para metodo

13 respostas
edysnipes

Boa tarde senhores.

Tenho uma página com a seguinte URL http://localhost:8080/SecInforPMB/admin/mostraDetalheOS.jsp?idOrdemServico=6

Gostaria de saber como posso pegar essa informações (idOrdemServico) com o struts/JSP e passá-la para o seguinte metodo:
public OrdemServico consultaOrdemServico(int idOrdemServico)

Obrigado.

13 Respostas

herbertins

código

edysnipes

JSP que recebe a idOrdemServico via metodo get (http://localhost:8080/SecInforPMB/admin/mostraDetalheOS.jsp?idOrdemServico=6)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="UTF-8"%>
    
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="pt-BR">
<head>
<title>Editar Ordem de Serviço</title>
</head>
<body>

	<s:form>
		<s:textfield name="idOrdemServico" size="4"></s:textfield>
		<s:property value="usuario.deRamal"/>
		<s:textarea name="ordemServico.deOrdemServico" cols="40" rows="10"  readonly="true" ></s:textarea>
		<s:textarea cols="40" rows="5"  value="OBS"></s:textarea>
		<s:submit name="" value="Gravar"></s:submit>	
	</s:form>
</body>
</html>

Metodo que receberá o idOrdemServico da JSP e executará a consulta.

public OrdemServico consultaOrdemServico(int idOrdemServico) {
		Session sessao = sessionFactory.getCurrentSession();
		sessao.beginTransaction();
		OrdemServico ordemServico = null;
		try {
			Criteria criteria = sessao.createCriteria(OrdemServico.class);
			criteria.createAlias("OrdemServico", "os");
			criteria.add(Expression.eq("os.idOrdemServico", idOrdemServico));
			ordemServico = (OrdemServico)criteria.uniqueResult();
			return ordemServico;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	
	}// Fim do método consultaOrdemServico

lembrando que a dúvida é de como pegar essa informaçao da url e passar para meu metodo executar a consulta.

Obrigado.

herbertins
JSP que recebe a idOrdemServico via metodo get (http://localhost:8080/SecInforPMB/admin/mostraDetalheOS.jsp?idOrdemServico=6) 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="UTF-8"%> 

<%@ taglib prefix="s" uri="/struts-tags" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="pt-BR"> 
<head> 
<title>Editar Ordem de Serviço</title> 
</head> 
<body> 

<s:form> 
<s:textfield name="idOrdemServico" size="4"></s:textfield> 
<s:property value="usuario.deRamal"/> 
<s:textarea name="ordemServico.deOrdemServico" cols="40" rows="10" readonly="true" ></s:textarea> 
<s:textarea cols="40" rows="5" value="OBS"></s:textarea> 
<s:submit name="" value="Gravar"></s:submit> 
</s:form> 
</body> 
</html> 

Metodo que receberá o idOrdemServico da JSP e executará a consulta. 

public OrdemServico consultaOrdemServico(int idOrdemServico) { 
Session sessao = sessionFactory.getCurrentSession(); 
sessao.beginTransaction(); 
OrdemServico ordemServico = null; 
try { 
Criteria criteria = sessao.createCriteria(OrdemServico.class); 
criteria.createAlias("OrdemServico", "os"); 
criteria.add(Expression.eq("os.idOrdemServico", idOrdemServico)); 
ordemServico = (OrdemServico)criteria.uniqueResult(); 
return ordemServico; 
} catch (Exception e) { 
e.printStackTrace(); 
return null; 
} 

}// Fim do método consultaOrdemServico

por favor sempre use a tag [code] para melhor visualização e entendimento do código

herbertins

Seguinte, vc está usando o struts neh.

vc está usando o conseito de form e action??? vc poderia criar uma classe Form que seria ordem de serviço e ai vc na action instanciaria a classe e pegaria o valor

desculpe se estiver falando besteira mais eh que sou novo nessa area tbm

M

Boa tarde,

Não seria somente criar os métodos get e set desta variável idOrdemServico na classe da action e acessar este atributo.

alexandre.etf

ola amigo, respondendo a sua solicitação…
vc poderia fazer igual ao amigo disse acima
criar uma variavel com o mesmo nome dos campos e fazer os getters and setters… porem acho
que o codigo ficara sujo… ja pensou se tiver passando varios parametros? teria que criar varias
variaveis…
uma solução seria

HttpServlet request = ServletActionContext.getRequest();

pronto
para pegar os parametros

request.getParameter(“nome da variavel”);

Espero ter contribuido !

edysnipes

sim mas tenho que acionar essa action antes mesmo de mostrar a pagina pois farei um consulta com esse id e listarei as informaçoes de acordo com os dados retornardos.

alexandre.etf

isso mesmo… na sua action que vai executar a lista…
vc pega o parametro
HttpServlet request = ServletActionContext.getRequest();

int id = request.getParameter("idOrdemServico ");
ai faz tua sql…

edysnipes

Blz. entendi so que ele diz que nao pode converter Http HttpServletRequest para HttpServlet.

o que fazer ??

alexandre.etf

ops escrevi errado

HttpServletRequest request = ServletActionContext.getRequest();

edysnipes

Blz cara funcionou certinho.

Agora uma ultima duvida.

tenho um int id que recebe uma string como faço para tranformar essa strint en int ??

alexandre.etf

int id = Integer.parseInt(request.getParameter(“variavel do request”));
testa ai

edysnipes

Muito obrigado a todos. O problema foi resolvido.

Criado 22 de abril de 2008
Ultima resposta 22 de abr. de 2008
Respostas 13
Participantes 4