【发布时间】:2014-09-02 05:08:35
【问题描述】:
我想在提交之前将列表框中的值传递给 java bean——在这种情况下,用户选择一个新的列表框值和一个基于所选值动态更新的表——其中,该值由一个 bean 函数,它根据值创建一个新的 List 并用于填充表。
这是一个显示在表单项右侧的小表格,仅供参考。
这是 jsp 页面,我确实有一个带有列表框设置/获取功能的 bean。
我对 ajax 示例感到困惑,因为它们似乎需要一个 url。我可以将网址放在同一页面吗?它似乎还要求 url 指向页面或 xml 文件。我只想要当前页面表单中的列表框值。
顺便说一句,我没有使用 php(那里有很多使用 php 的示例)。 我没有使用 jquery。 我正在使用 jstl/el。 我确实了解 jstl/el 和 bean 的东西是服务器端,而 javascript 是客户端。
我愿意调整我的页面以适应一个可行的想法。
干杯,
大卫
示例: 我被要求提供一些代码,所以这是我微弱的尝试。想象一下 jsp 中的一个名为 stuff.jsp 的函数。它在函数 a 中获取列表框值并将其放入名为 project_acronym 的变量中。然后它尝试使用 ajax 作为参数传递它。然后我在 createTable 函数中尝试将它抓取到一个名为 acronym 的 java bean 值中,对于这个测试用例,我只是尝试通过警报显示它的值。
这不起作用。我似乎在使用 responseText 和 responseXML,它们只是返回 stuff.jsp 的网页源代码。我想要的是我传递的参数,而不是源代码。
function init() {
document.add_user_roles.acronym.value = project_acronym;
alert("project acro at client is: " + project_acronym);
// alert happily shows the value.
var url = "http://myserver.com/apps/myappstuff/stuff.jsp";
var params = "acronym=" + project_acronym;
var xmlhttp = false;
try {
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest(); //for IE7+, Firefox, Chrome, Opera, Safari
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //for IE6, IE5
}
//Create a asynchronous GET request
xmlhttp.open("GET", url + "?" + params, true);
//When readyState is 4 then get the server output
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
//document.add_user_roles.getElementById("DOMTarget2").innerHTML = xmlhttp.responseText;
alert(xmlhttp.responseText);
// yuck, this shows the stuff.jsp source code
}
else {
alert('Something is wrong !!');
}
}
};
xmlhttp.send(null);
} catch(e) {
alert(e);
}
tableCreate();
function tableCreate() {
<% String acronym = request.getParameter("acronym"); %>
alert("acronym: " + "<%=acronym%>");
... code to make table here
【问题讨论】:
-
如果能分享一些代码就好了。
-
对此的好答案将太长。基本上,您需要进一步研究客户端代码和服务器端代码之间的区别,以及创建 Ajax 的原因。而且您需要开始使用 jQuery 进行 Ajax 调用,而不是重新发明轮子。