java - bean 类 [my.testapp.forms.RedeemVoucherForm] 的属性 'redeemVoucherForm' 无效

标签 java jsp spring-mvc

我收到错误:

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/

相关文章:

java - Nashorn 和 ClassFilter

java - 为什么我用 Eclipse 制作的 Java 小程序无法运行?

jsp - JSP在Tomcat 7.0.23无法编译 但是在Tomcat 5.5.28可以运行

java - Spring Boot 和 Ajax 响应

java - 带有注释的 Spring MVC 验证

java - jackson.databind 没有这样的方法错误

java - 单选按钮问题

java - forEach 返回一个字符串而不是一个对象

java - 在多用户 JSP J2EE 应用程序中创建和关闭 ExecutorService 实例

java - 为什么这个基于 token 的 Spring Security 过滤器没有被调用?