2016-01-25 59 views
1

你能帮我解决这个问题吗,我遇到了HTTP状态400:请求的资源不可用每次我点击我的按钮编辑和删除,我不能现在解决这个问题已经有好几个星期了,请问有人能给我这个建议吗下面是我的代码:HTTP状态400:请求的资源不可用

用户控制器

@Controller 
 
@RequestMapping(value = "/ims-user") 
 
public class IMSUserController { 
 

 
\t private static final Logger logger = LoggerFactory.getLogger(IMSUserController.class); 
 
\t private static final String SAVE_ACTION = "/ims-user/save"; 
 
\t private static final String UPDATE_ACTION = "/ims-user/update"; 
 

 
\t @Autowired 
 
\t private IMSUserService imsUserService; 
 

 
\t @RequestMapping(method = RequestMethod.GET) 
 
\t public String loadIMSUserList(Model model) { 
 
\t \t logger.info("Getting all IMS Users"); 
 
\t \t model.addAttribute("imsUserList", imsUserService.getAllIMSUsers()); 
 
\t \t return "imsUserList"; 
 
\t } 
 

 
\t @RequestMapping(value = "/new", method = RequestMethod.GET) 
 
\t public String loadIMSUserForm(Model model) { 
 
\t \t logger.info("Creating new IMS User"); 
 
\t \t IMSUser imsUser = new IMSUser(); 
 
\t \t model.addAttribute("imsUser", imsUser); 
 
\t \t model.addAttribute("action", SAVE_ACTION); 
 
\t \t buildModel(model, imsUser, SAVE_ACTION); 
 
\t \t return "imsNewUserForm"; 
 
\t } 
 

 
\t @RequestMapping(value = "/view/{id}", method = RequestMethod.GET) 
 
\t public String loadIMSUserForm(Model model, @PathVariable Long id) { 
 
\t \t logger.info("Viewing User"); 
 
\t \t IMSUser imsUser = imsUserService.getIMSUserById(id); 
 
\t \t model.addAttribute("imsUser", imsUser); 
 
\t \t return "imsViewUserForm"; 
 
\t } 
 

 
\t @RequestMapping(value = "/save", method = RequestMethod.POST) 
 
\t public String saveIMSUser(@Validated @ModelAttribute("imsUser") IMSUser imsUser, BindingResult result, Model model, 
 
\t \t \t RedirectAttributes redirectAttributes) { 
 
\t \t imsUserService.addIMSUser(imsUser); 
 
\t \t return "redirect:/ims-user"; 
 
\t } 
 

 
\t @RequestMapping(value = "/delete", method = RequestMethod.GET) 
 
\t public String deleteIMSUser(@PathVariable Long id) { \t \t 
 
\t \t logger.info("Deleting User"); \t \t 
 
\t \t IMSUser imsUser = imsUserService.getIMSUserById(id); \t \t 
 
\t \t imsUserService.deleteIMSUser(imsUser); 
 
\t \t return "redirect:/ims-user"; 
 
\t } 
 

 
\t @RequestMapping(value = "/edit/{id}", method = RequestMethod.GET) 
 
\t public String editIMSUser(@PathVariable Long id, Model model, RedirectAttributes redirectAttributes) { 
 
\t \t 
 
\t logger.info("Loading edit for of IMSUser with the following details"); 
 
\t \t IMSUser imsUser = imsUserService.getIMSUserById(id); 
 
\t \t 
 

 
\t \t if (imsUser == null) { 
 
\t \t \t return "redirect:/ims-user"; 
 
\t \t } 
 
\t \t buildModel(model, imsUser, UPDATE_ACTION); 
 

 
\t \t return "imsEditUser";

VIEW-USER.JSP

<%@ page language="java" contentType="text/html; charset=UTF-8" 
 
\t pageEncoding="UTF-8"%> 
 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
 
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
 
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 
 

 
<html> 
 

 
<head> 
 

 
<link rel="stylesheet" type="text/css" 
 
\t href="<c:url value="/resources/css/style.css" /> "> 
 
<link rel="stylesheet" type="text/css" 
 
\t href="<c:url value="/resources/css/utility.css" /> "> 
 
<link rel="stylesheet" type="text/css" 
 
\t href="<c:url value="/resources/css/bootstrap/bootstrap.min.css" /> "> 
 

 
</head> 
 

 
<form:form modelAttribute="imsUser" action="${pageContext.servletContext.contextPath}/delete" method="GET" > 
 
\t <form:hidden path="id"/> 
 
\t <input type="button" id="btn-user-edit" value="Edit" class="btnHeader button" onclick="location.href='${pageContext.request.contextPath}/edit/{imsUser.id}'"/> 
 
</form:form> 
 

 

 
<body> 
 

 
\t \t <div class="form-user"> 
 
\t \t \t <ul> 
 
\t \t \t \t <c:out value="${action}"/> 
 
\t \t \t \t 
 
\t \t \t \t <li><label><strong> User Type  :</strong></label><span> 
 
\t \t \t \t <c:out value="Employee"/></span></li> \t 
 
\t \t \t \t 
 
\t \t \t \t <li><label><strong> Username  :</strong></label><span> 
 
\t \t \t \t <c:out value= "${imsUser.username}" /></span></li> 
 
\t \t \t \t 
 
\t \t \t \t <li><label><strong> Password  :</strong></label><span> 
 
\t \t \t \t <c:out value= "${imsUser.password}" /></span></li> 
 
\t \t \t \t 
 
\t \t \t \t <li><label><strong> Client Name  :</strong></label><span> 
 
\t \t \t \t <c:out value="Biolinks"/></span></li> 
 
\t \t \t \t 
 
\t \t \t \t <li><label><strong> First Name  :</strong></label><span> 
 
\t \t \t \t <c:out value="${imsUser.firstname}" /></span></li> 
 
\t \t \t \t 
 
\t \t \t \t <li><label><strong> Middle Name  :</strong></label><span> 
 
\t \t \t \t <c:out value= "${imsUser.middlename}" /></span></li> 
 
\t \t \t \t 
 
\t \t \t \t <li><label><strong> Last Name  :</strong></label><span> 
 
\t \t \t \t <c:out value= "${imsUser.lastname}" /></span></li> \t 
 
\t \t \t \t 
 
\t \t \t \t 
 
\t \t \t \t <li><label><strong> Contact Number  :</strong></label><span> 
 
\t \t \t \t <c:out value= "${imsUser.contactNumber}" /></span></li> 
 
\t \t \t \t 
 
\t \t \t \t <li><label><strong> E-mail Address  :</strong></label><span> 
 
\t \t \t \t <c:out value= "${imsUser.emailAddress}" /></span></li> 
 
\t \t \t \t 
 
\t \t \t \t <li><label><strong> Address  : </strong></label><span> 
 
\t \t \t \t <c:out value= "${imsUser.address}"/></span></li> \t \t 
 
\t \t \t \t \t \t \t 
 
\t \t \t \t <li><label><strong> City  :</strong></label><span> 
 
\t \t \t \t <c:out value= "${imsUser.city}"/></span></li> 
 
\t \t \t \t 
 
\t \t \t \t <li><label><strong> Postal Code  :</strong></label><span> 
 
\t \t \t \t <c:out value= "${imsUser.postalCode}" /></span></li> 
 
\t \t \t \t 
 
\t \t \t </ul> 
 
\t \t 
 
\t 
 
\t \t </div> 
 

 
</body> 
 
</html> 
 

 
<div id="deleteUserDialog" title="Please Confirm" class="hidden"> 
 
\t \t Are you sure you want to delete this user? 
 
</div> 
 

 
<script type="text/javascript"> \t 
 

 
function deleteUser() 
 
{ 
 

 
\t \t document.getElementById("imsUser").submit(); 
 
\t \t 
 
} \t 
 

 

 

 
</script>

EDIT-USER.JSP

<%@ page language="java" contentType="text/html; charset=UTF-8" 
 
\t pageEncoding="UTF-8"%> 
 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
 
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
 
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 
 

 

 
<form:form id="imsUser" modelAttribute="imsUser" action="${pageContext.servletContext.contextPath}${action}" method="GET" cssClass="form-user"> 
 
\t \t <form:hidden path="id"/> 
 
\t \t <c:out value="${imsUser.id}"/> 
 
\t \t 
 
\t \t <ul> 
 
\t \t \t \t \t 
 
\t \t \t \t <li><label><strong> Username </strong></label>:<form:input 
 
\t \t \t \t \t \t type="text" path="username" /></li> 
 
\t \t \t \t <li><label><strong> Password </strong></label>:<form:input 
 
\t \t \t \t \t \t type="text" path="password" /></li> 
 
\t \t \t \t <li><label><strong> First Name </strong></label>:<form:input 
 
\t \t \t \t \t \t type="text" path="firstname" /></li> 
 
\t \t \t \t <li><label><strong> Middle Name </strong></label>:<form:input 
 
\t \t \t \t \t \t type="text" path="middlename" /></li> 
 
\t \t \t \t <li><label><strong> Last Name </strong></label>:<form:input 
 
\t \t \t \t \t \t type="text" path="lastname" /></li> 
 
\t \t \t \t <li><label><strong> Contact Number </strong></label>:<form:input 
 
\t \t \t \t \t type="text" path="contactNumber"/></li> \t \t \t 
 
\t \t \t \t <li><label><strong> E-mail Address </strong></label>:<form:input 
 
\t \t \t \t \t \t type="text" path="emailAddress" /></li> 
 
\t \t \t \t <li><label><strong> Address </strong></label>:<form:input 
 
\t \t \t \t \t \t type="text" path="address" /></li> 
 
\t \t \t \t <li><label><strong> City </strong></label>:<form:input 
 
\t \t \t \t \t \t type="text" path="city" /></li> 
 
\t \t \t \t <li><label><strong> Postal Code </strong></label>:<form:input 
 
\t \t \t \t \t \t type="text" path="postalCode" /></li> 
 
\t \t 
 
\t \t \t 
 
\t \t </ul> 
 
</form:form>

感谢您的帮助家伙!

回答

0

我认为你的表单正在做POST请求而不是DELETE/PUT。你可以看看浏览器的开发控制台来确认它。

您可以从窗体传递action = delete/put作为请求参数。并将HiddenHttpMethodFilter添加到您的Spring应用程序中。

0

有在你的控制器类级别多一个映射是@RequestMapping(value = "/ims-user")

按钮应提交:

onclick="location.href='${pageContext.request.contextPath}/ims-user/edit/{imsUser.id}'"

,而不是

onclick="location.href='${pageContext.request.contextPath}/edit/{imsUser.id}'"

0

我看看你的代码,我会尝试先改变一些小事情。

你的观点页有形体出来的部分,我觉得把它放到身体部分可以有一点帮助。

该按钮删除,我认为你可以改变它的链接(< a href ...)到你的路线,并与此,你不需要一个窗体等。在这种情况下,你可以格式化你链接到它看起来像一个按钮,例如,使用bootstrap,class =“btn btn-default”,getboostrap.com中的更多示例。

我前段时间写了一个示例项目。在这个项目中你会看到一些例子,我希望这对你有所帮助。

https://bitbucket.org/macielbombonato/apolo

对不起我的英文不好,如果你需要一些帮助,下跌与我联系。

编辑添加一些代码...

鉴于JSP

</head> 
<body> 

<a href="${pageContext.request.contextPath}/ims-user/edit/{imsUser.id}" class="btn btn-default"> 
Edit 
</a> 

... 

你删除按钮可以使用相同的风格,但你需要将控制器更改为这项工作。通常,我使用这样的链接在我的控制器:

/ims-user/entity/1 

和使用方法删除

看看这个类在例如: UserAPIController

@RequestMapping(value = "{id}", method = RequestMethod.DELETE) 

有了这个您的网址将是

/ism-user/1 

但在你的情况下,你可以简单地包括de id在方法调用

@RequestMapping(value = "/ims-user/delete/{id}", method = RequestMethod.GET) 
public String deleteIMSUser(@PathVariable Long id) 

有了这个,你的删除按钮将是这样的:

<a href="${pageContext.request.contextPath}/ims-user/delete/{imsUser.id}" class="btn btn-default"> 
Delete 
</a> 

不要忘记,你的标签需要留在正确的位置,因此,你需要把形式,按钮和其他身体内部变薄。

我希望我帮你。

+0

嗨,我试着看看你已经分享给我的链接,但后来它不是英文的,所以我不明白这一点。我根据您的建议做了一些更改,但现在我得到了不同的错误,指出“客户端发送的请求在语法上不正确”。对不起,我是一个java编程的新手,没有适当的培训:( –

+0

嗨,我编辑了我的答案,试图更好地解释。如果你还有问题,请与我联系。 –

相关问题