我在jsp页面中有一个下拉列表,其中包含以下代码
<s:select name="newQuestion.CertificationId"
list="certificationList"
listKey="certificationId"
listValue="certificationName"
headerKey=""
headerValue="Select Certification"
label="Certification Name"
onchange="getQuestionsList(this.value)" />
现在,下拉列表的on change事件正在调用JS函数getQuestionsList(),它打算获取所选认证ID的问题列表。
在JS函数中,我将它提交到一个动作类,我正在进行数据库调用,根据认证ID的值获取问题列表
function getQuestionDetails(value){
var submiturl = "Action1.action?certId="+value;
$.ajax({
url:submiturl,
type: 'get',
beforeSend: function(){
$("#loading").show();
alert("parsed");
},
success: function(result){
if(result!=''){
} else {
alert(result);
}
},
});
}
现在在动作类中我设置了queryList的值,其中包含我从数据库中获取的值.questionList是动作类中的实例变量,带有getter和setter方法。现在在struts.xml中我传递给同一个jsp我在下降了
<action name="questionAction" class="questionInfo.QuestionManager"
method="displaySelectedQuestions">
<result name="loaded">/questionAdmin.jsp</result>
</action>
我遇到的问题是当我回到jsp时我无法检索我在迭代器中显示的问题列表
<table class="registrationDetailsTable">
<tr class="tabledataheader">
<td>Question Id</td>
<td>Question Description</td>
</tr>
<s:iterator value="questionList">
<tr class="tabledatarow">
<td><s:property value="questionId" /></td>
<td><s:property value="questionDesc" /></td>
</tr>
</s:iterator>
</table>
请告诉我出错的地方,以便我在jsp中填写问题列表
答案 0 :(得分:1)
当您使用$.ajax(...)
调用操作时,操作会通过转发到视图(questionAdmin.jsp)来创建响应,对吗?在Ajax调用的返回值处理程序中,您可以使用此响应。
所以当你有这个:
success: function(result){
if(result!=''){
// nothing here currently!
} else {
alert(result);
}
}
您应该对生成的HTML执行某些操作。您可以从alert(result)
开始查看您获得的内容,然后使用Javascript显示新的列表内容。我会这样做,所以你有一个包含你的表格的div:
<div id="myTableWrapper"> <!-- I added this div -->
<!-- This part should come from the action when called by Ajax -->
<table class="registrationDetailsTable">
<tr class="tabledataheader">
<td>Question Id</td>
<td>Question Description</td>
</tr>
<tr class="tabledatarow">
<td>1</td>
<td>My question #1</td>
</tr>
<tr class="tabledatarow">
<td>2</td>
<td>My question #2</td>
</tr>
</table>
<!-- //This part should come from the action when called by Ajax -->
</div>
所以现在你可以这样做:
success: function(result){
if(result!=''){
$('.myTableWrapper').html(result);
} else {
alert(result);
}
}