Ajax 在两个应用程序JSF之间发送JSON

Ajax 在两个应用程序JSF之间发送JSON,ajax,json,jsf,servlets,xmlhttprequest,Ajax,Json,Jsf,Servlets,Xmlhttprequest,我想使用JSON和Ajax在两个应用程序之间发送数据。 对于第一个测试,我想单击一个按钮(在xhtml中)并在managedbean中接收数据(在第二个应用程序中) 为此,我创建了: xhtml页面: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java

我想使用JSON和Ajax在两个应用程序之间发送数据。 对于第一个测试,我想单击一个按钮(在xhtml中)并在managedbean中接收数据(在第二个应用程序中)

为此,我创建了:

xhtml页面:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:p="http://primefaces.org/ui">
    <body>
        <ui:composition template="/templates/template.xhtml">
            <ui:define name="content">
                <h:outputScript library="js" name="test.js" />
                <h:form>
                <h:button  onclick="validate();" value="Tester" type="button"/> 
                </h:form>
            </ui:define>
        </ui:composition>
    </body>
    </html>
ManagedBean测试bean:

public class TestBean extends HttpServlet{
    private static final long   serialVersionUID    = 1L;

    public TestBean() {
        super();
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // PrintWriter out = response.getWriter();
        String output = request.getParameter("params");
        System.out.println("Servlet : " + output);
    }
}
但是,当我单击xhtml页面中的按钮时,我不会在managedBean中执行doGet方法。我试图在这个方法中设置一个断点,但它始终不起作用

为什么?

谢谢。

你在混音。他们之间没有任何关系。您看到的
TestBean
类本质上是一个servlet,而不是JSF支持bean。通过类上的
@ManagedBean
faces config.xml
中的
将其注册为JSF托管bean,您无法使用它。它必须注册为一个完整的servlet。您可以使用类上的
@WebServlet
注释或
web.xml
中的
条目进行此操作

假设您的环境支持Servlet 3.0,只需使用
@WebServlet
注册它:

@WebServlet("/testservlet")
public class TestServlet extends HttpServlet {
    // ...
}
(这里,
/testservlet
,是servlet必须侦听的URL模式)

并且,假设
/Project1
是上下文路径,将其作为

(如果您首先直接在浏览器的地址栏中输入URL来测试它会更容易)

另见:
你在混音。他们之间没有任何关系。您看到的
TestBean
类本质上是一个servlet,而不是JSF支持bean。通过类上的
@ManagedBean
faces config.xml
中的
将其注册为JSF托管bean,您无法使用它。它必须注册为一个完整的servlet。您可以使用类上的
@WebServlet
注释或
web.xml
中的
条目进行此操作

假设您的环境支持Servlet 3.0,只需使用
@WebServlet
注册它:

@WebServlet("/testservlet")
public class TestServlet extends HttpServlet {
    // ...
}
(这里,
/testservlet
,是servlet必须侦听的URL模式)

并且,假设
/Project1
是上下文路径,将其作为

(如果您首先直接在浏览器的地址栏中输入URL来测试它会更容易)

另见:

你的Javascript控制台中有什么吗?我使用Firebug的Javascript控制台和控制台中的任何东西我认为你的servlet上出现了404错误,你的Javascript控制台中有什么吗?我使用Firebug的Javascript控制台和控制台中的任何东西我以为你的servlet上有404错误,但你已经知道了。它应该显示什么?(HTTP状态404对我来说)它应该显示
doGet()
正在执行的任何操作。顺便说一下,我的回答假设您使用的是Servlet3.0,域名是“example.com”。我可以假设你足够聪明,知道这一切意味着什么吗?如果适用,您应该在真实环境/config/approach中修复/更改它。另请参见第1段中的“servlet”链接,该链接包含更详细的示例和解释。我不使用@WebServlet,而是使用web.xml的配置,当我测试URL时,它显示错误404。显然,该配置或URL是错误的。根据目前提供的稀疏信息很难判断。它应该显示什么?(HTTP状态404对我来说)它应该显示
doGet()
正在执行的任何操作。顺便说一下,我的回答假设您使用的是Servlet3.0,域名是“example.com”。我可以假设你足够聪明,知道这一切意味着什么吗?如果适用,您应该在真实环境/config/approach中修复/更改它。另请参见第1段中的“servlet”链接,该链接包含更详细的示例和解释。我不使用@WebServlet,而是使用web.xml的配置,当我测试URL时,它显示错误404。显然,该配置或URL是错误的。根据目前提供的稀疏信息很难判断。