Как включить PHP-скрипт в страницу JSF под tomcat или смолы?
Я работал с приложением JSF под Tomcat. В том же проекте я настроил, также используя PHP, как описано на сайте Caucho Resin ( ссылка)
Но когда я пытаюсь включить отдельный рабочий скрипт PHP на страницу JSG, страница перестает работать.
я имею test.php
с:
<?php
print "hello world";
?>
в web.xml
Я добавил:
<servlet>
<servlet-name>Quercus Servlet</servlet-name>
<servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
<init-param>
<param-name>license-directory</param-name>
<param-value>WEB-INF/licenses</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Quercus Servlet</servlet-name>
<url-pattern>*.php</url-pattern>
</servlet-mapping>
Также добавлено resin.jar
в web-inf/lib
когда я звоню test.php
напрямую это работает, но когда я пытаюсь включить, как это:
<ui:include src="test.php"/>
или написать код PHP прямо на странице JSF, это не удается.
Вот исключение:
javax.faces.view.facelets.FaceletException: Error Parsing /test.php: Error Traced[line: 5] Premature end of file.
at com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:429)
at com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:403)
at com.sun.faces.facelets.compiler.Compiler.compile(Compiler.java:124)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:319)
at com.sun.faces.facelets.impl.DefaultFaceletFactory.access$100(DefaultFaceletFactory.java:92)
Кто-нибудь пробовал этот эксперимент?
1 ответ
Когда вы вызываете свою страницу PHP напрямую, она обрабатывается вашим сервлетом Quercus без каких-либо проблем. Но когда вы вызываете свою страницу PHP, включенную внутри страницы, отличной от PHP, например, JSP (или JSF, или XHTML, или другое расширение файла), ваш сервлет Quercus не обрабатывает ее, что приводит к таким ошибкам.
Вы можете выполнить разбор страницы с помощью Quercus Servlet и / или Faces Servlet (я не проверял это, поэтому я не уверен, будет ли он работать). Другим вариантом может быть не использование PHP-скриптов на ваших страницах JSP/JSF напрямую, а их использование для обработки действий, т.е. <form action="test.php">
,
Обратите внимание, что это не проблема JSF, не Tomcat, не Resin, не Caucho, это проблема сервлета или, что еще хуже, проблема дизайна. Это приводит к вопросу: зачем вам такой странный дизайн в вашем веб-приложении?