【发布时间】:2013-05-13 14:33:51
【问题描述】:
我需要将控件检索回 Jsp,并响应我之前触发的请求。 但我面临的问题是我无法在 jsp 中得到响应。
我浏览了一些帖子并尝试了一些建议,但似乎没有一个对我有用。请指出我的错误在哪里。
下面是我的尝试:
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
log.info("IN form doGet");
request.setCharacterEncoding("utf-8");
String selectedClass = request.getParameter("key");
log.info(selectedClass);
String[] section = null;
DBHandler dbhandler = new DBHandler();
dbhandler.makeConnection();
if (true == dbhandler.verifyConnection()) {
section = dbhandler.getSection(selectedClass);
}
for (String str : section) {
log.info(str);
}
Logger log;
if (null != section) {
request.setAttribute(Appconstants.Section, section);
}
response.setHeader("Access-Control-Allow-Origin", "*");
response.sendRedirect("/ReportFetcher/WebContent/FirstJSP.jsp");
// RequestDispatcher view = request.getRequestDispatcher("/First.jsp");
// view.forward(request, response);
}
以下是jsp部分:
function funcOnChange() {
var index = document.detail.Class.selectedIndex;
var valueSelected = document.detail.Class.options[index].value;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function()
{
// Check to see if this state change was "request complete", and
// there was no server error (404 Not Found, 500 Server Error, etc)
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var substring=xmlHttp.responseText;
alert("Alert Dialog! Gaurav");
}
if (xmlhttp.readyState == 404){
alert("404 error");
}
if (xmlhttp.readyState == 500){
alert("500 error");
}
}
xhr.open('GET', 'http://localhost:8080/ReportFetcher/FormHandler?key='+encodeURIComponent(valueSelected), true);
xhr.send(null);
return false;
}
【问题讨论】:
-
不清楚你想要实现什么以及问题是什么,但在 servlet 中,从数据库中检索信息并将其存储在请求属性中的意义是什么,如果你只是之后是发送重定向到另一个位置?
-
其实我需要做两个下拉,这样第二个下拉项目依赖于第一个下拉选择。这就是为什么我需要执行数据库操作来获取元素。所以,我在这里发送一个关于第一个下拉列表的 onChange 的请求并执行数据库操作并取回结果。现在我想要将此结果发送回我的 jsp 并激活第二个。但我无法发送结果。
-
重定向到 FirstJSP.jsp 告诉浏览器向 FirstJSP.jsp 发送新请求。因此,当 JSP 处理第二个请求时,您存储在第一个请求的属性中的所有内容都会丢失。你想要的是转发,而不是重定向。
-
你确定你的帖子是jsp部分吗?..是javascript?!
-
如我所说。在尝试找到解决问题的方法之前。试着找出并说出问题所在。这是通过在代码中添加跟踪、在服务器端使用调试器、使用浏览器开发工具查看发送的请求和接收的响应等来完成的。