【发布时间】:2014-07-10 09:10:25
【问题描述】:
我想更新一些用户的数据,但在从 JSP 下拉菜单中接收参数时遇到问题。我想从“Enter PC”块接收输入的 compId 并将其作为 PathVariable 传递。但它没有被看到。如果我硬编码 action="${app}/adminEdit.do/${user.userId}/${any number}" 它可以工作。所以,问题是——现在要从下拉列表中获取此参数并将其设置为路径?提前致谢。
Update.jsp sn-p
<c:set var="app" value="${pageContext.request.contextPath}"/>
............
<DIV class="admin_redaction_block">
<sf:form name="adminUserUpdate"
method="POST"
modelAttribute="userForm"
action="${app}/adminEdit.do/${user.userId}/${comp.compId}"
enctype="application/x-www-form-urlencoded">
<c:if test="${not empty errorMsg}">
<div class="error">
<c:out value="${errorMsg}"/>
</div>
</c:if>
<sf:label path="password"><strong>Enter new password:</strong></sf:label> <br>
<sf:input path="password" type="text" size="20"/><br>
<sf:errors path="password" cssClass="error"/>
<br>
<sf:label path="email"><strong>Enter new Email:</strong></sf:label> <br>
<sf:input path="email" type="text" size="20"/><br>
<sf:errors path="email" cssClass="error"/>
<strong>PC Assigned:</strong>
<h3 class="h3">
<td>
<c:choose>
<c:when test="${user.computers!= null && !user.computers['empty']}">
<c:forEach items="${user.computers}" var="comp">
<c:out value="${comp.pcName}"/>
</c:forEach>
</c:when>
<c:otherwise>
<p class="h3_error">No PC Assigned</p>
</c:otherwise>
</c:choose>
</td>
</h3>
<sf:label path="computers">Enter PC:</sf:label> <br>
<sf:select path="computers" size="3">
<c:forEach items="${computers}" var="comp">
<sf:option value="${comp.compId}">
<c:out value="${comp.compId}"/>
</sf:option>
</c:forEach>
</sf:select>
<br> <br>
<input type="SUBMIT" name="SUBMIT" value="Update User"/>
</sf:form>
控制器
@RequestMapping(value = "/adminEdit.do/{userId}/{compId}", method = RequestMethod.POST)
public ModelAndView updateUserProcess(@ModelAttribute(value = "userForm")
UserForm userForm,
@PathVariable("userId") Integer userId,
@PathVariable("compId") Integer compId,
BindingResult result, Model model,
HttpSession session,
HttpServletRequest request) {
User user = userService.getUserById(userId);
model.addAttribute("computers", computerService.getAllComputers());
............
model.addAttribute("userForm", userForm);
return updatingUser(user, model, userForm);
}
【问题讨论】:
-
您遇到什么类型的错误?和
If I hardcode action="${app}/adminEdit.do/${user.userId}/${any number}" it works.- 这是什么意思? -
我收到 404 错误,因为路径错误 localhost:8080/adminEdit.do/2/ - 没有第二个 PathVariable。关于硬编码 - 这意味着,如果我自己设置值,我会得到正确的路径 localhost:8080/adminEdit.do/2/5 (或任何数字) 这意味着控制器被传递了两个变量。希望现在更清楚了。
-
表示您的问题没有正确传递第二个参数,它是空白的..
-
你能告诉我们这里的
user和comp是什么吗? -
在你的第一个组合中
${user.computers}在那里,在第二个组合中${computers}
标签: java spring jsp url model-view-controller