Java 如何在SpringMVC中检查jsp是否进入控制器,以及如何将列表从控制器显示到jsp?
我有一个在tomcat中运行的spring mvc程序。 它有一个数据表,当用户单击按钮时,单击按钮所在行的某些值将传递给控制器 下面是我如何创建数据表的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,
$(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">×</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>