Reputation: 45
I am having trouble in redirecting the link of below code to my controller class.
This is the code:
$('#ticketDT').DataTable({
"dom": '<"toolbar">frtip',
"responsive": true,
"ordering": false,
"scrollY": "300px",
"scrollCollapse": true,
"ajax": "ticketList.json",
"bDestroy": true,
"deferRender": true,
"aoColumns": [
{"mData": "ticketNumber"},
{"mData": "category"},
{"mData": "subcategory"},
{"mData": "status"},
{"mData": "requestedBy"},
{"mData": "ticketNumber",
"fnCreatedCell": function (nTd, sData, oData, iRow, iCol) {
$(nTd).html("<a class='linkColor' href='${pageContext.request.contextPath}/assignMessageTicket?sender_assign=" + encodeURIComponent(sender) + "&portId_assign="+portId+"&messageId=" + encodeURIComponent(messageId) + "&ticketNumber_assign=" + encodeURIComponent(oData.ticketNumber) + "'><span data-toggle='tooltip' title='Assign'><i class='ti-plus btn btn-simple btn-assign btn-icon' data-mode='assignTicket'></i></span></a>");
}
}
],
This is my handler for the controller class:
@RequestMapping(value = {"assignMessageTicket"}, method = RequestMethod.GET)
@PreAuthorize("hasAnyRole('CWO_ENCODER,ADMIN')")
public ModelAndView assignMessageTicket(@RequestParam(value = "sender_assign",required = true) String sender,
@RequestParam(value = "portId_assign",required = true) String portId,@RequestParam(value = "messageId",required = true) String messageId,
@RequestParam(value = "ticketNumber_assign",required = true) String ticketNumber,
ModelMap model,HttpServletRequest request) throws UnsupportedEncodingException {
String currentUser = request.getRemoteUser();
SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/YYYY");
Date date = new Date();
String currentDate = formatter.format(date);
dashboardService.assignMessageSmsMessages(messageId,ticketNumber);
dashboardService.assignMessageSmsReply(messageId,ticketNumber);
dashboardService.addRecentlyAssignedMessage(sender,portId,ticketNumber,currentUser,currentDate);
String newSender = URLEncoder.encode(sender, "UTF-8").replaceAll("\\+", "%2B");
String newPortId = URLEncoder.encode(portId, "UTF-8").replaceAll("\\+", "%2B");
boolean hasError = false;
model.clear();
return new ModelAndView("redirect:conversation?sender="+newSender+"&portId="+newPortId+"&hasError="+hasError);
}
This is my updated code.
The link to the controller is
$(nTd).html("<a class='linkColor' href='${pageContext.request.contextPath}/assignSpecificMessage?messageId="+messageId+"&sender_assign=" + encodeURIComponent(sender) + "&portId_assign="+portId+"&ticketNumber_assign=" + encodeURIComponent(oData.ticketNumber) + "'><span data-toggle='tooltip' title='Assign'><i class='ti-plus btn btn-simple btn-assign btn-icon' data-mode='assignMessageTicket'></i></span></a>");
The controller is
@RequestMapping(value = {"assignSpecificMessage"}, method = RequestMethod.GET)
@PreAuthorize("hasAnyRole('CWO_ENCODER,ADMIN')")
public String assignSpecific(@RequestParam(value = "sender_assign",required = true) String sender,
@RequestParam(value = "portId_assign",required = true) String portId,@RequestParam(value = "messageId",required = true) String messageId,
@RequestParam(value = "ticketNumber_assign",required = true) String ticketNumber,
ModelMap model,HttpServletRequest request) {
return "conversation";
}
I tried to create a new handler to test it, Still, The same error appears.
Upvotes: -1
Views: 75
Reputation: 15878
Ensure that href value for your link is getting build properly.
Go to browser elements tab and check the value for link href and make sure that it is not breaking.
or you can do that using jquery or javascript like below.
$("#idOfAnchorTag").on("click", function(){
var href = $(this).find('a').attr('href');
....
})
UPDATE: As you provided link in one of my comments, it is clear that your request parameters names are not matching with the controller one.
link :
http://localhost:8084/cwms/assignSpecificMessage?assign_sender=%2B639062165304&assign_portId=6&messageId=15416427366198288583&assign_ticketNumber=ADM-1809-00473
Controller :
@RequestParam(value = "sender_assign",required = true) String sender,
@RequestParam(value = "portId_assign",required = true) String portId,@RequestParam(value = "messageId",required = true) String messageId,
@RequestParam(value = "ticketNumber_assign",required = true) String ticketNumber,
You are using wrong parameter names in request so change all the parameters to controller one.
For example sender_assign
you are sending as assign_sender
and so on.
SO to make it work use sender_assign
instead of assign_sender
and all other parameters also from client side(anchor href)
Upvotes: 0