没有属性的吸气剂方法...错误 [英] No getter method for property... error

查看:61
本文介绍了没有属性的吸气剂方法...错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法找出我做错了什么.

I am unable to find out what I am doing wrong.

我收到此错误:

javax.servlet.jsp.JspException: No getter method for property: "firstname" of bean: "org.apache.struts.validator.DynaValidatorForm"
    at org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:915)
    at org.apache.struts.taglib.html.BaseFieldTag.prepareValue(BaseFieldTag.java:126)
    at org.apache.struts.taglib.html.BaseFieldTag.renderInputElement(BaseFieldTag.java:102)
    at org.apache.struts.taglib.html.BaseFieldTag.doStartTag(BaseFieldTag.java:80)
    at org.apache.jsp.login_jsp._jspx_meth_html_005ftext_005f1(login_jsp.java:1095)
    at org.apache.jsp.login_jsp._jspx_meth_html_005fform_005f1(login_jsp.java:1040)
    at org.apache.jsp.login_jsp._jspService(login_jsp.java:759)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

在struts-config.xml文件中使用年龄:

in the struts-config.xml file the tage is used:

<form-bean name="sendContactForm" type="org.apache.struts.validator.DynaValidatorForm">
            <form-property name="firstname" type="java.lang.String" initial="firstname"/>
            <form-property name="lastname" type="java.lang.String" initial="lastname"/>
            <form-property name="emailaddress" type="java.lang.String" initial="email"/>
            <form-property name="subject" type="java.lang.String" initial="subject"/>
            <form-property name="comments" type="java.lang.String" initial="comments"/>
        </form-bean>

还有:

<action path="/sendContactForm" attribute="sendContactForm" input="/login.jsp"
            name="sendContactForm" scope="request"  parameter="reqCode"
            type="org.springframework.web.struts.DelegatingActionProxy" validate="true">
            <forward name="sendcontacts" path="/login.jsp"/>
        </action>

在Actionform中,我有:

in Actionform I have:

public class ContactAction extends DynaValidatorActionForm {

    private static Logger log = Logger.getLogger(ContactAction.class);


public ActionForward sendContactForm(ActionMapping mapping, ActionForm form,
            HttpServletRequest req, HttpServletResponse resp) throws Exception {
            log.debug("ContactForm--start");


DynaValidatorActionForm sendContactForm = (DynaValidatorActionForm) form;
ActionMessages messages = new ActionMessages();

String firstName = ((String) sendContactForm.get("firstname"));
String lastName = ((String) sendContactForm.get("lastname"));
String emailAddress = ((String) sendContactForm.get("emailaddress"));
String subject = ((String) sendContactForm.get("subject"));
String comments = ((String) sendContactForm.get("comments"));
return mapping.findForward("sendcontacts");

在jsp文件中,我有:

In the jsp file I have:

    <html:form action="/sendContactForm.do?ContactCd=sendContactForm" method="post" styleId="sendContactForm">
    <c:set var="sendContactForm" value="${sendContactForm}" />

    <html:errors/>           



        <label for="firstname">First Name  <span class="asterisk">*</span>
        </label>
            <html:text styleId="firstname" property="firstname" styleClass="form-control tip required"  name="sendContactForm" />



        <label for="lastname">Last Name  <span class="asterisk">*</span>
        </label>
        <html:text styleId="lastname" property="lastname" styleClass="form-control tip pplaceholder" name="sendContactForm"/>



        <label for="emailaddress">Email Address  <span class="asterisk">*</span>
        </label>
        <html:text styleId="emailaddress" property="emailaddress" styleClass="form-control tip pplaceholder"  name="sendContactForm" />


        <label for="subject">Subject  <span class="asterisk">*</span>
        </label>
        <html:text styleId="subject" property="subject" styleClass="form-control tip pplaceholder" name="sendContactForm"/>

             <label for="comments">Comments  <span class="asterisk">*</span>
        </label>
        <html:textarea styleId="comments" property="comments" styleClass="form-control tip pplaceholder" name="sendContactForm"></html:textarea>

</html:form>

我研究了很多,但还没有成功.

I have researched a lot but wasn't success yet.

那么,怎么了?谢谢.

推荐答案

主要更新:

我用这里提到的更改尝试了您的代码,并且包含这五个字段的登录页面将显示为默认的初始值,这些默认值是在Bean定义中给出的.显示页面没有错误.

I tried out your code with the changes I mentioned here, and the login page with all those five fields are getting displayed with their default initial values that were given in form-bean definition. There are no errors in displaying the page.

这里要注意的另一件事是,您的login.jsp没有提交按钮,并且您也不是全部提交表单,因此控件永远不会进入您的动作类.

Another thing to note here is that your login.jsp has no submit button and you are not all submitting the form, so the control never comes inside your action class.

这是login.jsp

This is the login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login Form</title>
</head>
<body>
<html:form action="/sendContactForm.do?ContactCd=sendContactForm"
        method="post" styleId="sendContactForm">
        <c:set var="sendContactForm" value="${sendContactForm}" />

        <html:errors />



        <label for="firstname">First Name <span class="asterisk">*</span>
        </label>
        <html:text styleId="firstname" property="firstname"
            styleClass="form-control tip required" name="sendContactForm" />



        <label for="lastname">Last Name <span class="asterisk">*</span>
        </label>
        <html:text styleId="lastname" property="lastname"
            styleClass="form-control tip pplaceholder" name="sendContactForm" />



        <label for="emailaddress">Email Address <span class="asterisk">*</span>
        </label>
        <html:text styleId="emailaddress" property="emailaddress"
            styleClass="form-control tip pplaceholder" name="sendContactForm" />


        <label for="subject">Subject <span class="asterisk">*</span>
        </label>
        <html:text styleId="subject" property="subject"
            styleClass="form-control tip pplaceholder" name="sendContactForm" />

        <label for="comments">Comments <span class="asterisk">*</span>
        </label>
        <html:textarea styleId="comments" property="comments"
            styleClass="form-control tip pplaceholder" name="sendContactForm"></html:textarea>

    </html:form>


</body>
</html>

使用的罐子是

struts-taglib-1.3.10.jar,struts-core-1.3.10.jar,jstl-1.2.jar,commons-validator-1.3.1.jar, commons-logging-1.0.4.jar,commons-digester-1.8.jar,commons-chain-1.2.jar,commons-beanutils-1.8.0.jar,antlr-2.7.2.jar

struts-taglib-1.3.10.jar,struts-core-1.3.10.jar,jstl-1.2.jar,commons-validator-1.3.1.jar, commons-logging-1.0.4.jar,commons-digester-1.8.jar,commons-chain-1.2.jar,commons-beanutils-1.8.0.jar,antlr-2.7.2.jar

以下tld放在我的WEB-INF

struts-bean.tld, struts-html.tld,struts-logic.tld

如果您有任何验证,则validation.xml也可能会出现在WEB-INF中

If you have any validation, validation.xml may also be present in WEB-INF

ContactAction.java [在您当前的情况下,控件不在此处]

ContactAction.java [in your current case, control does not come here]

public class ContactAction extends Action {

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest req, HttpServletResponse resp) throws Exception {

        DynaValidatorForm sendContactForm = (DynaValidatorForm) form;
        ActionMessages messages = new ActionMessages();

        String firstName = ((String) sendContactForm.get("firstname"));
        String lastName = ((String) sendContactForm.get("lastname"));
        String emailAddress = ((String) sendContactForm.get("emailaddress"));
        String subject = ((String) sendContactForm.get("subject"));
        String comments = ((String) sendContactForm.get("comments"));
        return mapping.findForward("sendcontacts");
    }
}

以前的编辑 sendContactForm.get("firstname")的用法正确,就像使用DynaValidatorForm一样.

Previous edits Usage of sendContactForm.get("firstname") is correct, as you are using DynaValidatorForm.

错误是您的动作课扩展了错误的课.

The error is that your action class is extending the wrong class.

public class ContactAction extends DynaValidatorActionForm

这是错误的.您需要扩展Action类 即:

This is wrong. You need to extend the Action class ie:

public class ContactAction extends Action

也可以代替

DynaValidatorActionForm sendContactForm = (DynaValidatorActionForm) form;

使用

DynaValidatorForm sendContactForm = (DynaValidatorForm) form;

更新: 在您的动作课中,

Update: In your action class,

此方法名称-sendContactForm是什么?有什么理由吗?

what is this method name - sendContactForm ? Is there any reason for this?

public ActionForward sendContactForm 

为什么不将其更改为 public ActionForward execute

Why don't you change it to public ActionForward execute

这篇关于没有属性的吸气剂方法...错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆