Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 客户端发送的请求在语法上不正确+;春天_Spring_Hibernate_Jsp - Fatal编程技术网

Spring 客户端发送的请求在语法上不正确+;春天

Spring 客户端发送的请求在语法上不正确+;春天,spring,hibernate,jsp,Spring,Hibernate,Jsp,我搜索了这个问题,当我得到它时,它与命名冲突有一些问题,但我再次找不到原因。我会感谢你的帮助。以下是.jsp中调用控制器的行: <td> <a href="message/createMessage"> Reply </a> <input type="hidden" name="receiver" value="${message.fromUser}"> </td> 谢谢你的帮助 为了解决这个问

我搜索了这个问题,当我得到它时,它与命名冲突有一些问题,但我再次找不到原因。我会感谢你的帮助。以下是.jsp中调用控制器的行:

<td>
    <a href="message/createMessage">
        Reply
    </a>
    <input type="hidden" name="receiver" value="${message.fromUser}">
</td>
谢谢你的帮助

为了解决这个问题,根据第一个答案,我尝试使用url重写。在我的控制器中使用@PathVariable(“接收器”)。还是一样的问题。我在这里添加了完整修订的jsp:单击消息的回复链接时出错

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"     "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>welcome ${sessionScope.user.userName}</h1>

<form:form method="POST" action="message/deleteMessage">
<table border="1">
    <tr>
        <th>Message ID</th>
        <th>From User</th>
        <th>Message</th>
        <th>Date</th>
        <th>Reply to User</th>
        <th>Delete</th>
    </tr>

    <c:forEach items="${messages}" var="message"  >
    <tr>
      <td>${message.messageID}</td>
      <td>${message.fromUser}</td>
      <td>${message.message}</td>
      <td>${message.messageDate}</td>
      <td><a href="message/createMessage?receiver=${message.fromUser}">Reply</a></td>
      <td><input type="checkbox" name="delete" value="${message.messageID}"> </td>
    </tr>
    </c:forEach>
    <tr><td colspan="6"><input type="submit" value="Delete selected messages"></td></tr>    

</table>
</form:form>

在此处插入标题
欢迎${sessionScope.user.userName}
消息ID
来自用户
消息
日期
回复用户
删除
${message.messageID}
${message.fromUser}
${message.message}
${message.messageDate}

在“表单”中,您有一个简单的html超链接,它不执行任何表单提交操作(因此隐藏字段的值永远不会被发送)

因此,您需要声明一个
元素

然后,您需要使用AJAX提交表单或创建一个提交按钮。另一种方法是通过添加表单的值来手动传递接收者值
createMessage?receiver=someValue
(我添加了这个示例,我认为这不是一种推荐的方法,任何事情都有其优缺点)

所以有很多方法可以传递参数


请参见

抱歉,我没有在文本中提到它。这是标题结尾错误“http400-客户端发送的请求在语法上不正确”。控制台中没有给出任何其他内容!谢谢。我在jsp中做了此更改,还更改了控制器方法的参数,如下所示:public String createMessage(@PathVariable(“receiver”)字符串接收器,HttpSession会话,模型)我将添加完整修订的jsp作为答案。谢谢您的支持help@BobbyF我认为
@RequestParam
也会起作用,因为GET方法通过它的parameters@BobbyF请显示与
@PathVariable
一起使用的
@RequestMapping
,并且
@RequestParam
也适用于标准的
GET
参数。
@PathVariable
的请求映射语法不同。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"     "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>welcome ${sessionScope.user.userName}</h1>

<form:form method="POST" action="message/deleteMessage">
<table border="1">
    <tr>
        <th>Message ID</th>
        <th>From User</th>
        <th>Message</th>
        <th>Date</th>
        <th>Reply to User</th>
        <th>Delete</th>
    </tr>

    <c:forEach items="${messages}" var="message"  >
    <tr>
      <td>${message.messageID}</td>
      <td>${message.fromUser}</td>
      <td>${message.message}</td>
      <td>${message.messageDate}</td>
      <td><a href="message/createMessage?receiver=${message.fromUser}">Reply</a></td>
      <td><input type="checkbox" name="delete" value="${message.messageID}"> </td>
    </tr>
    </c:forEach>
    <tr><td colspan="6"><input type="submit" value="Delete selected messages"></td></tr>    

</table>
</form:form>