我想使用 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>
测试.js:
function validate(){
try{
var myJSONObject = {"name":"hello","address":"xyz"};
var toServer = "data=" + encodeURIComponent(myJSONObject);
var request=new XMLHttpRequest();
request.open("POST", "http://'xxLocalIPxx':8080/Project1/folderTest/TestBean", true);
request.send(toServer);
return true;
}
catch(err)
{
alert(err.message);
}
};
托管豆测试豆:
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。我试图在这个方法中设置一个断点,但它从来没有用过。
为什么 ?
谢谢。