I am new to spring and I am facing the following issue:
编辑说明:
我可以通过创建一个新的控制器和ModelAndView方法来进行POST调用,但是现在我面临着另一个问题,即数据没有从JSP传递到控制器。
我的JSP代码是:
form:form method="POST" action="UserOperation"
modelAttribute="DebitModel">
<h3>Debit</h3>
<c:if test="${!empty listAccounts}">
<select name="item" id="account_dropdown"
onchange="changeAccountDetails(this.options[this.selectedIndex].value)">
<c:forEach items="${listAccounts}" var="account">
<option
value="${account.accID},${account.acctype},${account.balance}">AccID:
${account.accID} Balance: ${account.balance}</option>
</c:forEach>
</select>
<br>
<br>
<label ><b>Account ID: </b></label>
<label id="accIdText" path="accID">${listAccounts[0].accID}</label>
<label><b>Account Type: </b></label>
<label id="accTypeText" path="acctype">${listAccounts[0].acctype}</label>
<label><b>Balance: </b></label>
<label id="accBalText" path="balance">${listAccounts[0].balance}</label>
</c:if>
<br> <br> Enter Amount<input type="text"
id="amount" width="80" path="amount"></input> <br> <br>
<input type="submit" value="Debit"></input>
</form:form>
有一个普通的名为DebitModel的bean类。
我试图搜索并在许多地方未传递数据并找到解决方案,形式为:输入提及,但如果使用此方法,则不会获得Binding FoundException'java.lang.IllegalStateException:Bean名称为'DebitModel的BindingResult或普通目标对象都没有'可作为请求属性
即使存在。
The Controller class Code:
@Controller
@RequestMapping(value = "/UserOperation")
public class DebitController {
@Autowired
private AccountService mAccountService;
@RequestMapping(method = RequestMethod.POST)
public ModelAndView registerCustomer(@ModelAttribute("DebitModel") DebitModel debitModel, BindingResult result,
HttpServletRequest request) throws NoSuchAlgorithmException, FileNotFoundException {
ModelAndView modelAndView = new ModelAndView();
System.out.println("data------------------------" + debitModel.toString());
return modelAndView;
}
}
最佳答案
显示您的控制器类。
似乎您在路径定义中使用了错误的模式。尝试在jsp和控制器级别将“ / UserHomeDebit”更改为“ UserHomeDebit”。
提交表单时,这可以检查浏览器的URL。假设您的应用程序名称为sampleapplication.then网址为
http://localhost:8080/sampleapplication
然后,如果将/ UserHomeDebit用作控制器路径映射,则url将会更改如下。
http://localhost:8080/UserHomeDebit
所以它是错误的,正确的必须是
http://localhost:8080/sampleapplication/UserHomeDebit
因此,只需按照我之前所说的更改路径并检查