java - 根据从 struts2 应用程序中的下拉列表中选择的值填充表

标签 java jsp struts2

我在 jsp 页面中有一个下拉菜单,其中包含以下代码

<s:select name="newQuestion.CertificationId"
    list="certificationList"
    listKey="certificationId"
    listValue="certificationName"
    headerKey=""
    headerValue="Select Certification"
    label="Certification Name"
    onchange="getQuestionsList(this.value)" />

现在下拉菜单的 onchange 事件正在调用 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);
        }
    },
  });
}

现在,在操作类中,我使用从数据库获取的值来设置 QuestionList 的值。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 中填充问题列表

最佳答案

当您使用 $.ajax(...) 调用操作时,操作会通过转发到 View (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);
        }
    }

关于java - 根据从 struts2 应用程序中的下拉列表中选择的值填充表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6310367/

相关文章:

javascript - EasyUI DateBox - 无法提交表单

java - Struts2 REST 插件 : Sending JSON object through PUT

java - 寻找表达式评估器

java - 线程 "main"java.lang.NullPointerException 中的异常 - JAVA 记录数组

java - ArcGIS 运行时 : How to identify the topmost feature across all feature layers?

使用 Dockerfile 的 Java Spring Boot 随机端口

java - 枚举值作为下拉列表

jquery - 更改上下文根后 JSP 页面不工作

java - 如何将结果转发给 Struts2 中的另一个 Action ?

java - 无法加载标签 "org.apache.struts2.views.jsp.ui.FormTag"的标签处理程序类 "s:form"