Integração do Struts 2.1.x com DisplayTags

10 respostas
leo.junior

Estou tentando utilizar o DisplayTag no meu jsp mas não estou conseguindo obter sucesso.
Segue um exemplo do que estou tentando fazer:

<display:table id="teste" name="sessionScope.lista" class="estilo" sort="list" requestURI="index.jsp" uid="item"> <display:caption class="caption">Titulo</display:caption> <display:column sortProperty="ordem" title="Ordem" sortable="true" headerClass="sortTitle"> <a href="javascript:alert('${item.item}');">${item.numero}</a> </display:column> <display:column property="total" title="Total"></display:column> </display:table>

A tabela resultante não está sendo ordenada quando clico em “Ordem”.
Alguém saberia me dizer se essa integração funciona?
Não achei muita coisa a respeito…

10 Respostas

jyoshiriro

O requestURI não devira apontar para um mapeamento de Action ao invés de um JSP?

leo.junior

Na versão 2.0 do Struts esse código funciona assim!
Acho que não necessariamente deve ser um mapeamento de Action…

jyoshiriro

Ah tá… agora que reparei que cê pea lista do escopo de sessão. ^^’

Bem, o que ocorre quando você clica no título do campo desejando ordená-lo?

leo.junior

A tabela é recarregada mas a ordem continua a mesma…
Não aparece nenhuma msg de erro. Simplesmente não ordena…

jyoshiriro

Tenta tirar o atributo

sort=“list”

leo.junior

Tirei e obtive o mesmo resultado…

jyoshiriro

Fiz uma JSP de teste muito parecida com a sua e funcionou normalmente.

Como está sua diretiva de uso da taglib da display tag?

Como é a URL gerada quando você clica na coluna a ordenar?

jyoshiriro

Código completo da minha JSP

<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
<%@ page language="java" pageEncoding="ISO-8859-1"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  
  <body>
	<display:table id="teste" name="profissoes" requestURI="dt" uid="profissao">
		<display:caption>Titulo</display:caption>
		<display:column title="Nome" sortable="true" sortProperty="cdprofissao">
			${profissao.deprofissao}
		</display:column>
		<display:column property="cdprofissao" title="Código"></display:column>
	</display:table>
  </body>
</html>

O requestURI="dt" apenas chama uma Action que popula uma lista simples com objetos do tipo Profissao.
Código da Action:

public class DtAction extends ActionSupport{
	
	@SessionTarget
	Session session;
	
	public List<Profissao> getProfissoes() {
		return session.createCriteria(Profissao.class).setMaxResults(20).list();
	}
}
leo.junior

Veja como está o meu código.

Minha JSP (purchases.jsp):

<%@ taglib prefix="display" uri="http://displaytag.sf.net" %>

<div align="center">
	<div style="width: 85%;">
		<div align="left" style="display: block; float: left;">
			<display:table id="lastMonth" name="sessionScope.lastMonthPurchases" 
			class="blockTable" sort="list" requestURI="index.jsp" 
			cellpadding="5" cellspacing="0" uid="item">
				<display:caption class="caption">Last Month</display:caption>
				<display:column sortProperty="number" title="Order Num" sortable="true"	headerClass="sortTitle">
					<a href="javascript:openPopUp('itemDetails.jsp?number=${item.number}&date=${item.date}&item=${item.item}&total=${item.total}');">
						${item.number}
					</a>
				</display:column>
				<display:column property="total" title="Total"></display:column>
			</display:table>
		</div>
	</div>
</div>

Minha Action:

@Action(value="purchases", results={
			@Result(name=SUCCESS, location="/purchases.jsp")
	})
	@Override
	public String execute() throws Exception {
		
		Map session = (Map) ActionContext.getContext().get("session");
		
		setLastMonth(pDao.getLastMonthPurchases());
		
		session.put("lastMonthPurchases", lastMonth);
		
		return SUCCESS;
	}

Ainda não consegui identificar porque a ordenação não funciona…
Obrigado pela ajuda!

leo.junior

Alguém tem mais alguma sugestão?

Vlws!

Criado 19 de fevereiro de 2010
Ultima resposta 23 de fev. de 2010
Respostas 10
Participantes 2