Java 如何在SpringMVC中检查jsp是否进入控制器,以及如何将列表从控制器显示到jsp?

Java 如何在SpringMVC中检查jsp是否进入控制器,以及如何将列表从控制器显示到jsp?,java,sql,ajax,spring-mvc,Java,Sql,Ajax,Spring Mvc,我有一个在tomcat中运行的spring mvc程序。 它有一个数据表,当用户单击按钮时,单击按钮所在行的某些值将传递给控制器 下面是我如何创建数据表的 $(document).ready(function () { $('#datatables').DataTable({ "dom": '<"toolbar">frtip', "responsive": true,

我有一个在tomcat中运行的spring mvc程序。 它有一个数据表,当用户单击按钮时,单击按钮所在行的某些值将传递给控制器

下面是我如何创建数据表的

$(document).ready(function () {

            $('#datatables').DataTable({
                "dom": '<"toolbar">frtip',
                "responsive": true,
                "scrollY": "550px",
                "scrollCollapse": true,
                "ajax": "smsSenders.json",
                "aoColumns": [
                    {"mData": "sender"},
                    {"mData": "content"},
                    {"mData": "receiveTime"},
                    {"mData": "portId",
                        "fnCreatedCell": function (nTd,oData) {
                            $(nTd).html("<i class='ti-pencil-alt btn btn-simple btn-assign btn-icon' data-toggle='modal' data-mode='asign'></i>\n\n\
                            <i class='ti-comment-alt btn btn-simple btn-reply btn-icon' data-target='#conversationModal' data-toggle='modal' data-mode='conversation'></i>\
                         ");
                        }
                    }
                ],
                language: {
                    "search": "_INPUT_",
                    searchPlaceholder: "Search records"
                }

            });

        demo.initCirclePercentage();
这是我的控制器类

@RequestMapping(value = {"/dashboard"}, method = RequestMethod.POST)
public String conversationList(ModelMap model, @RequestParam(value = "sender", required = true) String sender, 
        @RequestParam(value = "smsc", required = true) String smsc, HttpServletRequest request,
        @ModelAttribute("conversationList") ConversationMessages conversationMessage) throws Exception{
    LOGGER.debug("sender==================================="+sender);

    List<ConversationMessages> conversationList = dashboardService.getConversationList(sender,smsc);
    model.addAttribute("conversationList",conversationList);
    LOGGER.debug("this is conversation============================="+conversationList);

    return "dashboard";    
}
我不知道我在这里做的是否正确。但它不会在浏览器控制台和服务器日志中给出任何错误

我是否需要在控制器中使用@ModelAttribute

这是我的xml映射器

<resultMap id="conversationList" type="com.beneco.cwms.domain.dashboard.ConversationMessages">
    <result property="messageId" column="message_id"/>
    <result property="sender" column="sender"/>
    <result property="smsc" column="smsc"/>        
    <result property="portId" column="port_id"/>
    <result property="content" column="content"/>
    <result property="receiveTime" column="receive_time"/>
    <result property="hasRead" column="has_read"/>
    <result property="isAssignedToTicket" column="is_assigned_to_ticket"/> 
</resultMap>

<select id="getConversationList" parameterType="map" resultMap="conversationList">

    SELECT * FROM (SELECT*FROM SMS_MESSAGES WHERE SENDER = #{sender} and SMSC = #{smsc} and IS_ASSIGNED_TO_TICKET is null 
        UNION
    SELECT * FROM SMS_REPLY WHERE SMSC = #{sender} and SENDER = #{smsc} and IS_ASSIGNED_TO_TICKET is null) order by RECEIVE_TIME;

</select>
这是我的服务实现类

public class DashboardServiceImpl implements DashboardService{

    private static final Logger LOGGER = Logger.getLogger(SmsServiceImpl.class);

    @Autowired
    private DashboardMapper dashboardmapper;

    @Override
    public List<ConversationMessages> getConversationList(String sender, String smsc) {
        LOGGER.debug(dashboardmapper.getConversationList(sender,smsc) + "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        return dashboardmapper.getConversationList(sender,smsc);
    }
}
下面是如何在jsp中显示列表

<div class="modal fade" id="conversationModal" role="dialog">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal">&times;</button>
                <h4 class="modal-title">Conversation</h4>
            </div>
            <div class="modal-body">
                <div class="row">
                    <c:forEach items="${conversationList}" var="user">

                    <div class="col-md-12">
                        <div class="form-group">
                            <label>Sender: ${sender}</label>
                            <label>Content: ${sender}</label>
                        </div>
                    </div>
                    </c:forEach>
                </div>
            </div>
            <div class="modal-footer">
                <button type="submit" class="btn btn-default" data-dismiss="modal" id="saveAddress">Send</button>
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
        </div>
    </div>
</div>
控制器有没有办法在页面内部而不是页面本身返回模式

以下是我想做的:

用户单击按钮。 单击按钮的位置的值将传递给控制器。 将根据传递的值执行查询。 控制器将返回到同一页面,但显示查询结果的模式。 我的雄猫里有这个节目

WebAccessDeniedHandler:35句柄-用户:管理员试图访问 受保护的URL:/cwms/仪表板

蒂亚

您不需要使用@modeldattribute,因为您没有传递任何模型,@RequestParam就足够了。正如您提到的,警报在ajax内部工作,数据不会传递给控制器,我认为,您在ajax URL中使用的是不再可用的绝对路径,因此最好使用相对路径。即使是绝对路径也可以,只要您正确定义它

下面的代码显示了一个相对路径

<script>
   <c:url value = "/dashboard" var="dbURL"/> //hope you don't have a parent mapping like ..:8080/myProject/index/dashboard
   //other codes
   $.ajax({
   url : "${dbURL}"
   //codes
})
</script>

附加问题:点击按钮后,如何检查程序是否进入控制器?嗨@varman,我已经试过了。不过,它还是不起作用。我正在寻找另一种方法将变量传递给控制器。我该怎么做有什么想法吗?我还尝试通过url传递变量,但它仍然无法传递到控制器。Authentication auth=SecurityContextHolder.getContext.getAuthentication;如果验证!=null{LOGGER.warnUser:+auth.getName+试图访问受保护的URL:+request.getRequestURI;}我认为这会阻止它进入控制器,我不知道为什么。您使用的是spring安全性,您是否使用用户角色?如果是,您必须启用该用户的URL,在SecurityConfiguration类中,必须允许用户使用antMatchers/dashboard.accesshasRole'SYSTEM_ADMIN'等url。参考这个,我真的不能让它工作。我尝试使用另一种方法来传递变量。现在我正试图通过url传递它。但它说的是未定义。更新您的SecurityConfigure代码,将尝试帮助您
<script>
   <c:url value = "/dashboard" var="dbURL"/> //hope you don't have a parent mapping like ..:8080/myProject/index/dashboard
   //other codes
   $.ajax({
   url : "${dbURL}"
   //codes
})
</script>