Problemas com Display tag library

9 respostas
bonfarj

To tentando tem mais de uma hora colocar isso pra funcionar e nada… estou testando assim (Struts):

<bean:define id="a" name="SolicitacaoCotacaoForm" property="solicitacoesCotacao"/>
<display:table name="a">
    <display:column property="solicitante"/>
</display:table>

ta dando o seguinte erro:

<blockquote>2006-07-25 10:19:22,156 ERROR taglib.tiles.InsertTag  -> ServletException in /pages/EDSolicitacaoCotacao.jsp: org/apache/commons/beanutils/NestedNullException

javax.servlet.ServletException: org/apache/commons/beanutils/NestedNullException

at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)

at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)

at org.apache.jsp.pages.EDSolicitacaoCotacao_jsp._jspService(EDSolicitacaoCotacao_jsp.java:501)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)

at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:590)

at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:510)

at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)

at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:581)

at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:101)

at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:137)

at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:758)

at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:890)

at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:460)

at org.apache.jsp.pages.common.layout_jsp._jspx_meth_tiles_insert_3(layout_jsp.java:236)

at org.apache.jsp.pages.common.layout_jsp._jspService(layout_jsp.java:136)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)

at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)

at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)

at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)

at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)

at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:261)

at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:237)

at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:300)

at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)

at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)

at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)

at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)

at java.lang.Thread.run(Unknown Source)

</blockquote>

Segui todas as intruções de http://displaytag.sourceforge.net/11/install.html, não sei mais o q fazer. :cry:

abraços,

9 Respostas

A

Vc tem que fazer mais ou menos assim como eu to mostrando. Esse seu name = "a’ nao deveria ser ${a}

&lt;display:table class="mark" name="&lt;%=request.getAttribute("lista") %&gt;" id="primitivo"&gt; 
           			&lt;display:column title="Login Default" class="ListsPadding"&gt;${primitivo.loginDefault}&lt;/display:column&gt;	             
       			&lt;/display:table&gt;
ldanielts

Além disso, verifique se o objeto solicitacoesCotacao tem alguma coisa.

se SolicitacaoCotacaoForm.getSolicitacoesCotacao() == null), solicitacoesCotacao.getSolicitante() vai lançar uma NullPointerException.

Abraços.

bonfarj

mas ${a} nao é para o caso de estar usando EL? eu tentei com ele e tb nao funcionou...

peguei o codigo do displaytag e vi q o erro acontece em:

protected Object evaluateExpression(String expression) throws ObjectLookupException
    {

        String expressionWithoutScope = expression;

        // default scope = request
        // this is for compatibility with the previous version, probably default should be PAGE
        int scope = PageContext.REQUEST_SCOPE;

        if (expression.startsWith("pageScope.")) //$NON-NLS-1$
        {
            scope = PageContext.PAGE_SCOPE;
            expressionWithoutScope = expressionWithoutScope.substring(expressionWithoutScope.indexOf('.') + 1);
        }
        else if (expression.startsWith("requestScope.")) //$NON-NLS-1$
        {
            scope = PageContext.REQUEST_SCOPE;
            expressionWithoutScope = expressionWithoutScope.substring(expressionWithoutScope.indexOf('.') + 1);

        }
        else if (expression.startsWith("sessionScope.")) //$NON-NLS-1$
        {
            scope = PageContext.SESSION_SCOPE;
            expressionWithoutScope = expressionWithoutScope.substring(expressionWithoutScope.indexOf('.') + 1);

        }
        else if (expression.startsWith("applicationScope.")) //$NON-NLS-1$
        {
            scope = PageContext.APPLICATION_SCOPE;
            expressionWithoutScope = expressionWithoutScope.substring(expressionWithoutScope.indexOf('.') + 1);

        }

        return LookupUtil.getBeanValue(this.pageContext, expressionWithoutScope, scope);

    }

mais especificamente na ultima linha, parece q ele nao consegue achar o "a" em nenhum escopo, estranho...

se alguem souber de alguma coisa falai! :wink:

abracos!

keller

Opa , vou colar um uso da DisplayTag espero
que voce consiga identificar como utiliza-la.

<%-- Cria a tabela usando a displaytag --%>
			<display:table		name="listOpcaoPesquisa"
								pagesize="7"
								requestURI="editOpcoesPesquisa.action"
								uid="opcaoPesquisa" >
				
				<display:column		sortable="true"
									property="id"
									title="Seq." />
				
				<display:column		sortable="true"
									property="descricao"
									title="Opção" />
				
				<display:column		sortable="true"
									property="complemento"
									title="Complemento" />
				
				<display:column		sortable="false"
									title="Imagem">
					<img src="<ww:url value="${opcaoPesquisa.pathImage}"/>" border="none" >
				</display:column>
				
				<display:column		title="E"
									href="deleteOpcoesPesquisa.action"
									paramId="id"
									paramProperty="id">
					<img src="<ww:url value="/imgs/b_excluir2_des.gif"/>" border="none" >
				</display:column>
				
			</display:table>

Basta ter uma List neste caso a listOpcaoPesquisa , no request / session / context que a displaytag se vira…

Valeu? Até… :thumbup:
[]s

bonfarj

eu peguei as versoes das libs la do displaytag... agora o problema é outro... ele dá "Nothing found to display.", sendo que a lista tem coisa...

vejam:

<bean:define id="lista" name="SolicitacaoCotacaoForm" property="solicitacoesCotacao"/>
	<logic:iterate id="item" name="lista">
		<bean:write name="item" property="solicitante"/><br>
	</logic:iterate>

	<display:table  name="lista">
		<display:column property="solicitante"/>
	</display:table>

eu usei esse so pra conferir q tem coisa na lista... ele faz tudo certinho... quando chega na ele diz q nao tem nada.. alguem sabe oq posso fazer? :cry:

abracos,

keller
bonfarj:
eu peguei as versoes das libs la do displaytag... agora o problema é outro... ele dá "Nothing found to display.", sendo que a lista tem coisa...

vejam:

<bean:define id="lista" name="SolicitacaoCotacaoForm" property="solicitacoesCotacao"/>
	<logic:iterate id="item" name="lista">
		<bean:write name="item" property="solicitante"/><br>
	</logic:iterate>

	<display:table  name="lista">
		<display:column property="solicitante"/>
	</display:table>

eu usei esse so pra conferir q tem coisa na lista... ele faz tudo certinho... quando chega na ele diz q nao tem nada.. alguem sabe oq posso fazer? :cry:

abracos,

Voce leu o que eu respondi? Se leu faltou atencao!
Use assim a displayTag:





Deve resolver o seu problema..
Valeu? Até.. :thumbup:
[]s

bonfarj

mas eu ja fiz isso. veja o ultimo codigo que postei:

<bean:define id="lista" name="SolicitacaoCotacaoForm" property="solicitacoesCotacao"/>
	<logic:iterate id="item" name="lista">
		<bean:write name="item" property="solicitante"/><br>
	</logic:iterate>

	<display:table  name="lista">
		<display:column property="solicitante"/>
	</display:table>

repare que o listalista que foi passado para foi criado com um . O solicitacoesCotacao que vc falou é um atributo de SolicitacaoCotacaoForm, por isso eu usei o .

dudaskank

Isso é muito estranho, já que o modo de usar o display parece estar tudo certo. Você só está tendo problemas usando junto com o struts ou já teve isso antes?

Bem, eu tentaria colocar na action um setAttribute(“lista”, seuObjeto.getSolicitacoesCotacao()); e testaria novamente o display tag…

Aqui, por exemplo, usei assim na servlet, sem o struts:

request.setAttribute("listaPistas", pistaDAO.getPistas()); request.getRequestDispatcher("lista.jsp").forward(request, response);

e para imprimir a lista:

<display:table name="listaPistas"> <display:column property="id" title="Pista" /> <display:column property="nome" /> </display:table>

flw e boa sorte

abelgomes
  1. <display:table name=“listaPistas”>
  2. <display:column property="id" title="Pista" />
    
  3. <display:column property="nome" />
    
  4. </display:table>

agora esses atributos id e nome tem que estar no form ou só no bean resolve?

Criado 25 de julho de 2006
Ultima resposta 24 de set. de 2008
Respostas 9
Participantes 6