我想在提交之前从listbox传入一个java bean的值 - 用户选择一个新的列表框值和一个基于所选值动态更新的表 - 其中,该值由一个bean函数,它根据值创建一个新的List,并用于填充表。
这是一个显示在表单项右侧的小表,仅供参考。
这是jsp页面,我有一个带有listbox set / get函数的bean。
我对ajax示例感到困惑,因为它们似乎需要一个url。我可以将网址放在同一页面上吗?它似乎也要求url指向页面或xml文件。我只想从当前页面的表单中的列表框值。
我不是顺便使用php(有很多php使用的例子)。 我不是在使用jquery。 我正在使用jstl / el。 我知道jstl / el和bean的东西是服务器端,javascript是客户端。
我愿意调整我的页面以适应一个有用的想法。
干杯,
大卫
实施例: 我被要求提供一些代码,所以这是我的微弱尝试。想象一下名为stuff.jsp的jsp函数。它在其函数中具有抓取列表框值并将其放入名为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
答案 0 :(得分:0)
这不是我想要做的,但我创建了另一个名为rolestable.jsp的页面,该页面具有创建表的功能,并且可以访问与第一个jsp页面相同的bean,但设置为session =“page” 。然后,当发生列表框更改事件时,第一个jsp页面调用函数,该事件调用具有一个参数的新jsp页面(即,acronym = theselectedvalue)。第一页显示iframe中的表格。然后,我在第二页中进行元刷新,以便每15秒更新一次,以显示可能发生的任何更改。我讨厌这个,因为元刷新当然会使页面消失并以非常显着的方式重新出现。
ajax能否在这种情况下适应最小的调整?