Exceção ao adicionar biblioteca de tags personalizadas ao JSP

user3780716

Eu tenho o mesmo problema que esta pergunta sem resposta de quase 2 anos atrás.

<%@ taglib uri="/WEB-INF/tlds/myLib" prefix="myLib" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

Eu tenho essas duas linhas no meu JSP. Originalmente, eu estava usando apenas a biblioteca principal JSTL e tudo funcionou bem. Assim que adiciono uma biblioteca personalizada, recebo uma exceção como esta:

java.lang.NullPointerException
at org.apache.jasper.compiler.TagLibraryInfoImpl.toString(TagLibraryInfoImpl.java:129)
at java.lang.String.valueOf(String.java:2979)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at java.util.concurrent.ConcurrentHashMap.toString(ConcurrentHashMap.java:1321)
at org.apache.taglibs.standard.tag.common.core.OutSupport.out(OutSupport.java:211)
at org.apache.taglibs.standard.tag.common.core.OutSupport.doStartTag(OutSupport.java:132)
at org.apache.jsp.FormTest_jsp._jspx_meth_c_out_3(FormTest_jsp.java:306)
at org.apache.jsp.FormTest_jsp._jspx_meth_c_forEach_1(FormTest_jsp.java:256)
at org.apache.jsp.FormTest_jsp._jspService(FormTest_jsp.java:83)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:875)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:739)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:575)
at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:546)
at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:428)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:378)
at form.FormServlet.processRequest(FormServlet.java:60)
at form.FormServlet.doPost(FormServlet.java:89)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
at java.lang.Thread.run(Thread.java:745)

Se eu remover qualquer uma das duas diretivas taglib, tudo funcionará corretamente.

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd">
  <tlib-version>1.0</tlib-version>
  <short-name>mylib</short-name>
  <uri>/WEB-INF/tlds/myLib</uri>
  <tag>
    <name>beaner</name>
    <tagclass>form.BeanTagHandler</tagclass>
    <bodycontent>empty</bodycontent>
  </tag>
</taglib>

tld é mínimo para tentar fazer isso funcionar.

Agradeceria se alguém pudesse oferecer algumas dicas sobre qual pode ser o problema. Obrigado.

EDIT: Encontrada a origem do problema.

<table>
<tr>
<th>Attribute Name</th>
<th>Attribute Value</th></tr>
<c:forEach var="a" items="${applicationScope}">
<tr>
<td> <c:out value="${a.key}"/> </td>
<td> <c:out value="${a.value}" /> </td>
</tr>
</c:forEach>
</table>

A parte problemática é o c: out de $ {a.value}. O jsp funciona bem sem ele. Por algum motivo, funciona bem quando não importo minha biblioteca de tags personalizadas. Alguma idéia de por que tentar eliminar os valores do applicationScope causaria problemas?

user3780716

Tudo bem, descobri o problema. Há um atributo chamado com.sun.jsp.taglibraryCache em applicationScope que é a Classe ConcurrentHashMap. Parece que importar outra biblioteca de tags faz com que o método toString da classe forneça um NullPointerException. Corrigi meu problema usando c: catch para capturar a exceção.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Adicionar a biblioteca JGIT ao projeto causa sobreposição de recursos

Extensão de tags personalizadas JSP

Erro ao adicionar biblioteca

Adicionar propriedades personalizadas ao Serilog

Adicionar propriedades personalizadas ao Serilog

Exceção ao usar biblioteca de threading no Django

Como adicionar informações de string personalizadas (não const) ao formato de log?

Como adicionar propriedades personalizadas ao controle de usuário WPF

Adicionar funções personalizadas ao suplemento do painel de tarefas

Faça o Inno Setup adicionar automaticamente dados de páginas personalizadas ao arquivo .inf

Como adicionar regras de validação personalizadas ao usar Form Request Validation no Laravel 5

É possível adicionar cabeçalhos de solicitação personalizados ao usar as guias personalizadas do Chrome?

exceção de ponteiro nulo ao adicionar elemento à lista

Adicionar dados de objeto ao lançar uma exceção

Exceção StackOverflow ao adicionar uma lista de matriz a outra

Como adicionar filtragem de exceção ao disjuntor do MassTransit?

Evite o aviso Vue ao usar tags personalizadas

Exceção ClassNotFoundException ao usar a biblioteca

Adicionar biblioteca ao plugin Eclipse

Adicionar biblioteca ao gradle build

como adicionar biblioteca ao eclipse

Erro ao adicionar biblioteca ao Android Studio

Como adicionar tags HTML personalizadas ao Visual Studio e evitar linhas onduladas

Como adicionar tags xml personalizadas ao sitemap.xml usando mvcsitemapprovider?

Exceção de inicialização lenta ao adicionar Object ao HashSet

Como adicionar fontes personalizadas ao editor QuillJS?

como posso adicionar formas personalizadas ao mxgraph

Como posso adicionar tabelas personalizadas ao configurationDbContext?

Como adicionar configurações de projeto personalizadas ao Xcode ao usar CocoaPods?

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    UITextView não está exibindo texto longo

  3. 3

    Dependência circular de diálogo personalizado

  4. 4

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  5. 5

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  6. 6

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  7. 7

    Setas rotuladas horizontais apontando para uma linha vertical

  8. 8

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  9. 9

    Definir um clipe em uma trama nascida no mar

  10. 10

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  11. 11

    Como dinamizar um Dataframe do pandas em Python?

  12. 12

    regex para destacar novos caracteres de linha no início e no fim

  13. 13

    Why isn't my C# .Net Core Rest API route finding my method?

  14. 14

    Como obter a entrada de trás de diálogo em treeview pyqt5 python 3

  15. 15

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  16. 16

    How to create dynamic navigation menu select from database using Codeigniter?

  17. 17

    Como recuperar parâmetros de entrada usando C #?

  18. 18

    Changing long, lat values of Polygon coordinates in python

  19. 19

    Livros sobre criptografia do muito básico ao muito avançado

  20. 20

    Método \ "POST \" não permitido no framework Django rest com ações extras & ModelViewset

  21. 21

    Pesquisa classificada, conte números abaixo do valor desejado

quentelabel

Arquivo