Como utilizar essa taglib ?EXEMPLOS
Como ficaria o SELECT ?EXEMPLOS
E outras dicas !!!
VLW!!!
Como utilizar essa taglib ?EXEMPLOS
Como ficaria o SELECT ?EXEMPLOS
E outras dicas !!!
VLW!!!
Na seção de Artigos e Tutorias no menu ao lado tem um tutorial sobre DisplayTag.
http://www.portaljava.com/home/modules.php?name=Content&pa=showpage&pid=155
Qualquer dúvida, é só falar!
È o seguinte, ve se voçê pode me ajudar:
Estou fazendo uma galeria de fotos onde gostaria de limitar 10 fotos por página, ai vi na net paginaçâo onde falaram para usar DisplayTag… só que eu não estou sabendo utilizar !!!
Action:
long idAlbum = Long.parseLong(request.getParameter("idAlbum"));
request.setAttribute("listaFotos", DAOFotos.listaFotos(idAlbum));
return mapping.findForward("exibeFotos");
DAO:
public static ArrayList<VOFoto> listaFotos(long idAlbum) throws SQLException {
String sql = "SELECT * FROM Foto WHERE Album_idAlbum = ?";
DataSource dataSource = null;
Connection conexao = null;
PreparedStatement pstmt = null;
ArrayList<VOFoto> listaFoto = new ArrayList();
try{
InitialContext ic = new InitialContext();
dataSource = (DataSource)ic.lookup(CONTEXT);
if(dataSource != null){
conexao = dataSource.getConnection();
pstmt = conexao.prepareStatement(sql);
pstmt.setLong(1, idAlbum);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
long idFoto = rs.getLong("idFoto");
String caminho = rs.getString("caminho");
listaFoto.add(new VOFoto(idFoto,caminho));
}
}
}catch (Exception e) {
e.printStackTrace();
System.out.println("ERRO: DAOFotos.selectAllColegios()");
}finally{
if(pstmt != null){
pstmt.close();
}
if(conexao != null){
conexao.close();
}
}
return listaFoto;
}
Está funcionando mas o problema é essa, caso eu cadastre 100 fotos ele ira exibir as 100, por isso gostaria de dividir 10 fotos por página.
O codigo da pagina onde eu resgato os campos:
<table width=“100%” border=“1” cellspacing=“0” cellpadding=“0”>
<tr>
<td><table width=“100%” border=“0” cellspacing=“0” cellpadding=“0”>
<tr>
<td align=“left” valign=“top”>
<table width=“25%” border=“0” cellspacing=“5” cellpadding=“0”>
<c:set var=“contador” value=“0” />
<c:forEach var=“fotos” items="${listaFotos}" end=“9” varStatus=“i”>
<c:choose>
<c:when test="${i.count %2 == 1}">
<tr>
<td align=“center”>
</c:when>
<c:when test="${i.count%2 == 0}">
<td align=“center”>
</c:when>
</c:choose>
<a href="${fotos.caminho}" target=“fotos” ><img border=“0” width=“60” height=“60” src="${fotos.caminho}"></a><br>
<c:set var=“contador” value="${i.count}" />
</c:forEach>
</table>
</td>
<td align=“left” valign=“top”>
<table align=“center” border=“0” cellspacing=“0” cellpadding=“0”>
<tr>
<td align=“center” valign=“middle”><img src=“imagem/compra_fotos.jpg”></td>
</tr>
<tr>
<td align=“center” valign=“top”><iframe marginwidth=“90” src=“imagem/foto_padrao.jpg” name=“fotos” frameborder=“no” width=“500” height=“350” scrolling=“no” allowtransparency=“true”></iframe></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table>
Se voçê poder me ajudar agradeço !!!
VLW !!!
Já leu o tutorial ? lá tem dicas de como fazer isso. É bem simples, basta passar a coleção para a DisplayTag e limitar o número de registros por página.
Gostaria que voçê tenha um pouco de paciência, pois sou meio novato olha só como ficou :
<display:table name="${listaFotos}" defaultsort=“1” pagesize=“9”
requestURI=“fotos.jsp”>
<display:column title=“Fotos” >
<img src="${listaFotos.caminho}">
</display:column>
</display:table>
Exibe essa Mesnsagem:
Nothing found to display.
Qual modificação devo fazer ?
cara…aparentemente a tag ta certinha…pelo q eu lembro…faz um teste para encontrar o problema…
pelo q vi vc esta loggando as coisas com sysout mesmo…então, na action, antes do seu foward, manda imprimir a sua lista de caminhos de imagens…
outra coisa…no seu JSP, pega via scriplet mesmo, e manda imprimir…assim vc vai saber onde as infos estão se perdendo…
falow
[quote=“rogerbten”]Gostaria que voçê tenha um pouco de paciência, pois sou meio novato olha só como ficou :
<display:table name="${listaFotos}" defaultsort=“1” pagesize=“9”
requestURI=“fotos.jsp”>
<display:column title=“Fotos” >
<img src="${listaFotos.caminho}">
</display:column>
</display:table>
Exibe essa Mesnsagem:
Nothing found to display.
Qual modificação devo fazer ?[/quote]
Sem problema. Paciência é o que nã falta
Faça um teste para verificar se o atributo listaFotos está mesmo sendo enviado para o JSP. Verifique na action se o ArrayList populado essa sendo enviado…
Pelo que andei testeando ela estar enviando normal:
Codigo:
<display:table name=“listaFotos”>
<display:column property=“caminho” />
</display:table>
Mas eu quero que exiba a imagem
Codigo:
<display:table name=“listaFotos” >
<display:column title=“caminho”>
<img src="${listaFotos.caminho}"
</display:column>
</display:table>
Só que esta dando erro:
The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: Exception in JSP: /fotos.jsp:24
21:
22: <display:table name=“listaFotos” sort=“list” defaultsort=“1” pagesize=“5” requestURI=“fotos.jsp”>
23: <display:column title=“caminho”>
24: <img src="${listaFotos.caminho}"
25: </display:column>
26: </display:table>
27:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
root cause
javax.servlet.ServletException: The “.” operator was supplied with an index value of type “java.lang.String” to be applied to a List or array, but that value cannot be converted to an integer.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
org.apache.jsp.fotos_jsp._jspService(fotos_jsp.java:90)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
Parece que está dando erro nessa linha:
${listaFotos.caminho}
Que tipo é o atributo “caminho” ?
Eu tenho IdFoto = long e o caminho = String, o caminho nada mais é o local onde as fotos estao armazenadas.
<display:table name=“listaFotos”>
<display:column property=“caminho” />
</display:table>
Como seria o meu <display:column> para exibir as imagens e não o caminho <img src"???">.
Geralmente utilizo um decorator para esse tipo funcionalidade. Veja exemplos em:
http://displaytag.sourceforge.net/11/tut_decorators.html
No meu tutorial também tem um exemplo.
Criei um pacote com o Decorator.
Qual usar:
implements ColumnDecorator ;
extends TableDecorator;
A principio utilizei o extends TableDecorator, o q devo modificar no código
não está funcionando:
package site.decorator;
import org.displaytag.decorator.TableDecorator;
import site.vo.VOFoto;
public class Decorator extends TableDecorator {
public String getCaminho() throws Exception {
Object objeto = this.getCurrentRowObject();
String caminho;
VOFoto foto = new VOFoto();
caminho = foto.getCaminho().toString();
return ????;
}
Despois como ficaria a minha tag:
<display:table name=“lista” decorator=“site.decorator.FotoDecorator”>
<display:column property=“caminho” />
</display:table>
Por enquanto agradeço sua ajuda !!!
[code]public class ImageDecorator extends TableDecorator {
public String getCaminho() throws DecoratorException {
final Object object = this.getCurrentRowObject();
String caminho;
if (object instanceof VOFoto) {
final VOFoto voFoto = (VOFoto) object;
caminho = fvoFoto.getCaminho().toString();
} else {
throw new DecoratorException("Objeto não encontrado no Wrapper da TableDecorator!");
}
return "<img src='" + caminho + "'>;
}[/code]
JSP:
<display:table name="lista" decorator="pacote.Decorator">
<display:column property="caminho" />
</display:table>
Sempre que postar códigos, utilize a tag BBCode para identar os códigos.
GRANDE Guilherme o código está perfeito !!!
Vamos lá agora que a paginação está funcionando o que devo mudar para alterar o links da página, pois esta sendo mostrada assim:
11 items found, displaying 1 to 5.[First/Prev] 1, 2, 3 [Next/Last]
E aproveitando, antes de utilzar o displaytag o código que eu tinha feito pegava as fotos e colocava em duas colunas na sequência da lista.
Codigo:
<c:set var="contador" value="0" />
<c:forEach var="fotos" items="${listaFotos}" end="9" varStatus="i">
<c:choose>
<c:when test="${i.count %2 == 1}">
<tr>
<td align="center">
</c:when>
<c:when test="${i.count%2 == 0}">
<td align="center">
</c:when>
</c:choose>
<a href="${fotos.caminho}" target="fotos" ><img border="0" width="60" height="60" src="${fotos.caminho}"></a><br>
<c:set var="contador" value="${i.count}" />
</c:forEach>
Como como posso fazer com displaytag.
Para alterar os links, você deve criar um arquivo chamado displaytag.properties e modificar os links. Você pode copiar o conteúdo do arquivo displaytag.properties que está armazenado dentro do JAR.
Para te facilitar, segue meu arquivo displaytag.properties customizado:
[code]basic.empty.showtable=false
basic.show.header=true
sort.amount=list
export.amount=list
export.decorated=true
paging.banner.group_size=8
paging.banner.placement=top
css.tr.even=even
css.tr.odd=odd
css.th.sorted=sorted
css.th.ascending=order1
css.th.descending=order2
css.table=
css.th.sortable=sortable
factory.requestHelper=org.displaytag.util.DefaultRequestHelperFactory
factory.decorator=org.displaytag.decorator.DefaultDecoratorFactory
locale.provider=org.displaytag.localization.I18nJstlAdapter
#locale.resolver=
export.types=csv excel xml pdf
export.csv.class=org.displaytag.export.CsvView
export.excel.class=org.displaytag.export.ExcelView
export.xml.class=org.displaytag.export.XmlView
export.pdf.class=org.displaytag.export.PdfView
export.csv=true
export.csv.label=<span class="export csv">CSV </span>
export.csv.include_header=false
export.csv.filename=
export.excel=true
export.excel.label=<span class="export excel">Excel </span>
export.excel.include_header=true
export.excel.filename=
export.xml=true
export.xml.label=<span class="export xml">XML </span>
export.xml.filename=
export.pdf=false
export.pdf.label=<span class="export pdf">PDF </span>
export.pdf.include_header=true
export.pdf.filename=
export.rtf=false
export.rtf.label=<span class="export rtf">RTF </span>
export.rtf.include_header=true
export.rtf.filename=
basic.msg.empty_list=
basic.msg.empty_list_row=<tr class="empty"><td colspan="{0}">Nenhum registro encontrado.</td></tr>
#error.msg.invalid_page=invalid page
export.banner=<div class="exportlinks">Opções de exportação: {0}</div>
export.banner.sepchar= |
paging.banner.item_name=item
paging.banner.items_name=itens
paging.banner.no_items_found=<span class="pagebanner">Nenhum {0} encontrado.</span>
paging.banner.one_item_found=<span class="pagebanner">Um {0} encontrado.</span>
paging.banner.all_items_found=<span class="pagebanner">{0} {1} encontrados, exibindo todos os {2}.</span>
paging.banner.some_items_found=<span class="pagebanner">{0} {1} encontrados, exibindo {2} a {3}.</span>
paging.banner.full=<span class="pagelinks">[<a href="{1}">Primeiro</a>/<a href="{2}">Anterior</a>] {0} [<a href="{3}">Próximo</a>/<a href="{4}">Último</a>]</span>
paging.banner.first=<span class="pagelinks">[Primeiro/Anterior] {0} [<a href="{3}">Próximo</a>/<a href="{4}">Último</a>]</span>
paging.banner.last=<span class="pagelinks">[<a href="{1}">Primeiro</a>/<a href="{2}">Anterior</a>] {0} [Próximo/Último]</span>
paging.banner.onepage=<span class="pagelinks">{0}</span>
paging.banner.page.selected=<strong>{0}</strong>
paging.banner.page.link=<a href="{1}" title="Go to page {0}">{0}</a>
paging.banner.page.separator=, \
pagination.sort.param=sort
pagination.sortdirection.param=dir
pagination.pagenumber.param=page
pagination.searchid.param=searchid
pagination.sort.asc.value=asc
pagination.sort.desc.value=desc
pagination.sort.skippagenumber=true
save.excel.banner=<a href="{0}" rel="external">save ({1} bytes)</a>
save.excel.filename=export.xls[/code]
Esse arquivo deve ficar armazenado no diretório WEB-INF/src.
Agora, não entendi a segunda dúvida.
A duvida é o seguinte no caso as fotos estão sendo exibidas em uma única coluna certo !!!
Gostaria as fotas dessa lista fossem exibidas em duas colunas mas as fotos não podem ser repetir !!
Hum… estou sem idéias para implentar isso. Você pode fazer essa lógica no Decorator. Tente fazer que eu dou uma olhada.
legal esse lance do Decorator…antes nao tinha isso não…tive q fazer varias “adaptações técnicas” pra conseguir algumas coisas…displaytag ta cada vez melhor…
É verdade. Os decorators são uma mão na roda para adicionar funcionalidade extra nas listagems, sem falar no visual que fica bem legal.