2010-01-15 2 views
4

Я создаю проект со стойками, и у меня проблема с использованием Jasper IReports. Я хочу экспортировать некоторую информацию в файл PDF, и я продолжаю получать java.lang.IllegalStateException: getOutputStream() уже был вызван ... Исключение из-за открытия ServletOutputStream в моем коде, когда страница уже открывает PrintWriter.Использование PrintWriter и OutputStream

Код в модели (так что это не в СПЯ, это в Java-файла), как это следующим образом:

public void handle(HttpServletResponse res, Connection connection, String path)throws Exception{ 
    ServletOutputStream out = null; 
    try { 

     JasperDesign jasperDesign = JRXmlLoader.load(path); 
     JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); 
     byte[] bytes = JasperRunManager.runReportToPdf(jasperReport, null, connection); 
     res.setContentType("application/pdf"); 
     res.setContentLength(bytes.length); 
     out = res.getOutputStream(); 
     out.write(bytes, 0, bytes.length); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     out.flush(); 
     out.close(); 
    } 

Я проверил соединение, путь и HttpServletResponse и все работает нормально.

Я очень новичок с отчетами Jasper, а также с кодировкой в ​​формате PDF, поэтому вы можете правильно определить, что у меня есть минимальное представление о том, что я делаю здесь, и что, очевидно, мой код копируется/вставляется из где-то через сеть.

Я попытался использовать PrintWriter вместо OutputStream, преобразовывая байты в String и используя метод PrintWriter.append (String) (allthought is not String is CharSequence), но он не извлекает данные в PDF.

Я также попытался получить PrintWriter, закройте его, чтобы открыть OutputStream (не работает) или отключить его (нет).

Любая помощь с решением использовать любой способ, который может отображать данные в pdf, будет отличным. Спасибо большое!

+0

, кто открывает PrintWriter? – Bozho

+0

Файл JSP пытается открыть PrintWriter при его запуске. Поэтому, когда я отправляю элемент управления в файл jsp через ActionMapping.findforward, JSP открывает PrintWriter и начинает показывать JSP. Я решил это, не пойдя никуда с моим поиском. Таким образом, нет загружаемого JSP-файла (загружать нечего), а код PDF (через OutputStream) переходит на страницу без загрузки jsp-файла и из-за этого без загрузки PrintWriter. – Random

ответ

3

Было бы полезно увидеть трассировку стека.

Сначала вы можете попробовать проверить здравомыслие: измените этот код, чтобы просто написать статическую строку (hello world) в ServletOutputStream и установить тип содержимого в text/html. Поскольку это должно работать нормально:

public void handle(HttpServletResponse res, Connection connection, String path)throws Exception{ 
ServletOutputStream out = null; 
try { 
    byte[] bytes = "hello world".getBytes(); 
    res.setContentType("text/html"); 
    res.setContentLength(bytes.length); 
    out = res.getOutputStream(); 
    out.write(bytes, 0, bytes.length); 
} catch (Exception e) { 
    e.printStackTrace(); 
} finally { 
    out.flush(); 
    out.close(); 
} 

НТН

+0

Действительно, этот код работает отлично. Я не понимаю этого, так как я думал, что вы не можете открыть OutputStream и PrintWriter. Может быть, установив тип контента в text/html, он каким-то образом переопределяет PrintWriter? Не – Random

+0

Нет я думаю, что только один может быть открыт: 'http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletResponse.html#getOutputStream()' Вы пытаетесь вызвать getWriter() после записи в выходной поток? Если вы потом, вот почему вы получаете недопустимое исключение. – simonlord

+0

Я думаю, что понимаю сейчас. Поскольку outputStream пишет pdf, программа по-прежнему заканчивает переход к actionmapping.findforward (к моему jsp). И jsp пишет с PrintWriter. Я думаю, что есть проблема, и почему теперь я вижу свой pdf-файл и все равно создаю исключение. Я мог бы попытаться никуда не уйти с помощью actionmapping, поэтому Exception для использования PrintWriter не существует. – Random

3

Некоторые идеи:

  • PrintWriter не будет работать, если вы работаете с бинарным потоком (PDF бинарные)
  • Неправильное состояние может возникнуть, если есть тайм-аут на стороне клиента или отключиться. Трассировка пакета процесса скажет вам много (даже если вы не можете их хорошо прочитать). Посмотрите на WireShark или то, что доступно для вашей платформы. Стоит ваше время узнать хотя бы немного о том, что происходит на уровне проводов.
  • Убедитесь, что данные, которые вы возвращаете из отчета, на самом деле являются pdf. Напишите его в файл и попытайтесь открыть.
  • В некоторых ситуациях вам нужно установить заголовок длины http перед записью в поток, иначе они сдаются, когда данные начнут отображаться. Здесь может быть необходимо.
+0

Спасибо! Я сделал простой Java proyect (а не webapp) и попытался создать PDF-файл, мой jrxml, похоже, работает. Я буду искать то, что происходит на уровне проводов. Мой отчет довольно короткий (около 200 символов) Я не думаю, что URL-адрес становится слишком большим для него ... – Random

0

Собственный ответ:

Я поставил на пути к jrxml, что на самом деле подключается к базе данных и получает некоторые реальные данные, и suddendly он работал, то PDF открыт в Mozilla, но Exception продолжает происходить. Я не знаю, как я могу бросить и исключение (я отлаживал, и Исключение происходит в одном и том же месте) и иметь возможность видеть PDF.

Поэтому я могу продолжать поиск того, что на самом деле происходит здесь. Я отвечу всем, что найду (возможно, в понедельник).

Спасибо simonlord и Джим Раш за вашу помощь! :)

Редактировать: Кстати, вот стопка (это на испанском языке, при необходимости я буду переводить все, что вы не понимаете): Редактировать снова: Кажется, я не копировал '1' в 15th-Jan-2010 ... может создать путаницу в отношении следа от вставки пятого января. Исправленный.

15-ene-2010 13:47:03 org.apache.catalina.core.ApplicationDispatcher invoke 
GRAVE: El Servlet.service() para servlet jsp lanzó una excepción 
java.lang.IllegalStateException: getOutputStream() ya ha sido llamado para esta respuesta 
    at org.apache.catalina.connector.Response.getWriter(Response.java:607) 
    at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:196) 
    at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112) 
    at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125) 
    at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118) 
    at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:171) 
    at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:116) 
    at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:76) 
    at org.apache.jsp.pages.inicio2_jsp._jspService(inicio2_jsp.java:300) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679) 
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584) 
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497) 
    at org.apache.struts.chain.commands.servlet.PerformForward.handleAsInclude(PerformForward.java:141) 
    at org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:92) 
    at org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54) 
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) 
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) 
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305) 
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) 
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) 
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873) 
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) 
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) 
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) 
    at java.lang.Thread.run(Unknown Source) 
15-ene-2010 13:47:03 org.apache.struts.chain.commands.AbstractExceptionHandler execute 
ADVERTENCIA: Unhandled exception 
org.apache.jasper.JasperException: getOutputStream() ya ha sido llamado para esta respuesta 
    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:367) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679) 
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584) 
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497) 
    at org.apache.struts.chain.commands.servlet.PerformForward.handleAsInclude(PerformForward.java:141) 
    at org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:92) 
    at org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54) 
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) 
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) 
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305) 
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) 
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) 
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873) 
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) 
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) 
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) 
    at java.lang.Thread.run(Unknown Source) 
15-ene-2010 13:47:03 org.apache.struts.chain.commands.ExceptionCatcher postprocess 
ADVERTENCIA: Exception from exceptionCommand 'servlet-exception' 
org.apache.jasper.JasperException: getOutputStream() ya ha sido llamado para esta respuesta 
    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:460) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:367) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679) 
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584) 
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497) 
    at org.apache.struts.chain.commands.servlet.PerformForward.handleAsInclude(PerformForward.java:141) 
    at org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:92) 
    at org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54) 
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) 
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) 
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305) 
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) 
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) 
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873) 
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) 
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) 
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) 
    at java.lang.Thread.run(Unknown Source) 
15-ene-2010 13:47:03 org.apache.catalina.core.StandardWrapperValve invoke 
GRAVE: Servlet.service() para servlet action lanzó excepción 
java.lang.IllegalStateException: getOutputStream() ya ha sido llamado para esta respuesta 
    at org.apache.catalina.connector.Response.getWriter(Response.java:607) 
    at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:196) 
    at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112) 
    at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125) 
    at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118) 
    at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:171) 
    at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:116) 
    at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:76) 
    at org.apache.jsp.pages.inicio2_jsp._jspService(inicio2_jsp.java:300) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679) 
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:584) 
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:497) 
    at org.apache.struts.chain.commands.servlet.PerformForward.handleAsInclude(PerformForward.java:141) 
    at org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:92) 
    at org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54) 
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) 
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) 
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305) 
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191) 
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) 
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873) 
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) 
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) 
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) 
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) 
    at java.lang.Thread.run(Unknown Source) 
1

Как именно вызывается код? Судя по stacktrace, похоже, что вы используете Java-класс с помощью метода handle, используя скриптлеты внутри JSP-файла (точнее, inicio2.jsp). После этого класс Java написал отчет в OutputStream, файл JSP продолжит вывод остатка самого файла (включая пробел!), Который неявно вызывает getWriter(), чтобы записать его в ответ. Именно то, что вызовет IllegalStateException, с которым вы сейчас сталкиваетесь, когда getOutputStream() уже вызывается ранее в классе Java.

Хорошо, что Java-код был помещен в Java-класс, но это не значит, что вы все равно можете использовать JSP для его вызова. JSP не должен содержать ни одной строки кода Java. JSP сам по себе является технологической частью представления. Чтобы исправить это все, просто используйте класс действия Struts (или HttpServlet), который вы можете вызвать с помощью HTML <form> или <a>.

+0

Код вызывается в файле Java в моем классе, который вызывается в действии моего и JSP называет это struct-config-xml как любой другой MVC, используя struts. Проблема более или менее решается (см. Комментарии к simonlord): Код попытался написать a.pdf, используя OutputStream на странице, в то время как в конце этого кода он попытался перенаправить на inicio2.jsp после написания .pdf. Конечно, jsp использует PrintWriter, и есть проблема. Я решил это, не перенаправляя код нигде (в поиске). Спасибо в любом случае! :) – Random