我收到错误:
Invalid property 'redeemVoucherForm' of bean class [my.testapp.forms.RedeemVoucherForm]: Bean property 'redeemVoucherForm' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
RedeemVoucherForm.java:
package my.testapp.forms;
public class RedeemVoucherForm {
private String voucherCode;
public String getVoucherCode() {
return voucherCode;
}
public void setVoucherCode(String voucherCode) {
this.voucherCode = voucherCode;
}
}
在我的 PageController.java
中,我添加了模型 redeemVoucherForm
,当我调用方法 model.containsAttribute("redeemVoucherForm") 时,该模型就存在:
@RequestMapping(method = RequestMethod.GET)
public String showPage(final Model model) {
...
model.addAttribute("redeemVoucherForm", new RedeemVoucherForm());
...
return REDIRECT_PAGE_URL;
}
@RequestMapping(value = "/redeem-voucher", method = RequestMethod.POST)
public String redeemVoucher(@Valid final RedeemVoucherForm redeemVoucherForm, final BindingResult bindingResult, final RedirectAttributes redirectModel, final Model model, HttpServletRequest request) {
LOG.debug("<POST> Redeeming voucher...");
return REDIRECT_PAGE_URL;
}
pageDisplay.jsp:
<c:url value="/page/redeem-voucher" var="redeemVoucherAction" />
<form:form action="${redeemVoucherAction}" method="post" commandName="redeemVoucherForm">
<form:input cssClass="form-control" type="text" path="redeemVoucherForm.voucherCode"/>
<button type="submit" class="btn btn-primary btn-block checkoutButton">
<spring:theme text="Redeem Voucher"/>
</button>
</form:form>
当我设置模型redeemVoucherForm
时,我还可能缺少什么?
最佳答案
我相信这句话
<form:input cssClass="form-control" type="text" path="redeemVoucherForm.voucherCode"/>
应该是
<form:input cssClass="form-control" type="text" path="voucherCode"/>
path
<form:input>
的元素应该相对于您设置为 commandName
的对象您的<form:form>
。在您的情况下,该对象是您的类 RedeemVoucherForm
的实例.
如果将路径设置为redeemVoucherForm.voucherCode
,Spring 寻找 redeemVoucherForm
你类(class)的属性(property)RedeemVoucherForm
。它期望 this 的值是某个带有 voucherCode
的对象。属性,它可以从中读取表单值。当然是redeemVoucherForm
属性不存在,因此您会收到错误。
关于java - bean 类 [my.testapp.forms.RedeemVoucherForm] 的属性 'redeemVoucherForm' 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39816852/