【问题标题】:How to include PHP script into JSF page under tomcat or resin?如何在tomcat或resin下将PHP脚本包含到JSF页面中?
【发布时间】:2013-04-01 21:35:02
【问题描述】:

我在 Tomcat 下工作过 JSF 应用程序。在我配置的同一个项目中,也使用 PHP,如 Caucho Resin 网站 (Link) 中所述

但是当我尝试在 JSG 页面中包含单独的 PHP 工作脚本时,页面失败了。

我有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"/>

或者直接在JSF页面写php代码会失败。

这是一个例外:

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)

有没有人尝试过这种实验?

【问题讨论】:

    标签: php jsf tomcat resin caucho


    【解决方案1】:

    当您直接调用您的 PHP 页面时,它正在由您的 Quercus Servlet 处理,完全没有问题。但是,当您调用包含在非 PHP 页面中的 PHP 页面时,例如 JSP(或 JSF 或 XHTML 或其他文件扩展名),您的 Quercus Servlet 不会处理它,因此会出现此错误。

    您可以混合使用 Quercus Servlet 和/或 Faces Servlet 来解析页面(我没有对此进行测试,所以我不确定它是否会起作用)。另一种选择可能是不直接在 JSP/JSF 页面中使用 PHP 脚本,而是使用它们来处理操作,即&lt;form action="test.php"&gt;

    请注意,这不是 JSF、Tomcat、Resin 或 Caucho 问题,而是 servlet 问题或更糟糕的设计问题。这就引出了一个问题:您为什么要在您的 Web 应用程序中使用这种奇怪的设计?

    【讨论】:

    • JSF应用程序中直接不需要使用php,但我尝试这样做是因为如果你的应用程序变大可能需要一些php脚本来解决特定问题,但实际上只是测试。跨度>
    • 我不太明白你的意思:如果你的应用程序变得很大,也许你需要一些 php 脚本来解决特定问题。当您遇到这些特定问题中的一个并发布时,我确信有使用 Java 的解决方案
    猜你喜欢
    • 2010-11-05
    • 1970-01-01
    • 2012-04-15
    • 2013-09-20
    • 1970-01-01
    • 2011-06-04
    • 2011-05-16
    • 2012-01-13
    • 2020-05-29
    相关资源
    最近更新 更多