2013-05-15 89 views
1

我无法找出我做错了什么。我必须在表单Bean中使用Form Bean,因为表单中有很多不同的部分。基本上,同一表格上有响应部分和请求部分。javax.servlet.jsp.JspException:没有获取属性的方法

初始化视图时,我得到一个没有getter方法的异常。 我使用Struts 1.2

javax.servlet.jsp.JspException: No getter method for property getAvailableAddres 
sRequest.resellerId of bean org.apache.struts.taglib.html.BEAN 
    at org.apache.struts.util.RequestUtils.lookup(RequestUtils.java:968) 

的struts-config.xml:

<form-beans> 
     <form-bean name="getAvailableAddress" type="com.wisor.talktalk.model.GetAvailableAddress" /> 
     <form-bean name="provideRequest" type="com.wisor.talktalk.common.talktalkbean.RequestActionForm" /> 
    </form-beans> 

    <action-mappings> 
     <action path="/ttTestJsp" type="com.wisor.talktalk.controller.TestJsp" 
      name="getAvailableAddress" 
      scope="session" 
      validate="false" 
      unknown="false"> 
      <forward name="init" path="/WEB-INF/talk/preorderView/getAvailableAddress.jsp"/> 
     </action> 
    </action-mappings> 

JSP页面:

<html:form action="/ttTestJsp.do?task=getResponse" styleClass="form"> 
     <fieldset> 
      <label class="inline label" for="reseller_id"><fmt:message 
        key="label.field.resellerId" />:</label> 
      <html:text 
       property="getAvailableAddressRequest.resellerId" 
       styleClass="mandatory" readonly="readonly"></html:text> 
     </fieldset> 
    <html:submit value="GetAddress"/> 
    </html:form> 

的FormBean主营:

public class GetAvailableAddress extends ActionForm{ 
    private GetAvailableAddressRequest getAvailableAddressRequest; 

    public void intilize(){ 
     getAvailableAddressRequest = new GetAvailableAddressRequest(); 
    } 


    public GetAvailableAddressRequest getGetAvailableAddressRequest(){ 
     return this.getAvailableAddressRequest; 
    } 
    public void setGetAvailableAddressRequest(GetAvailableAddressRequest getAvailableAddressRequest){ 
     this.getAvailableAddressRequest = getAvailableAddressRequest; 
    } 
} 

child Form Bean: 

    public class GetAvailableAddressRequest implements Serializable{ 


    private String resellerId; 
    public String getResellerID(){ 
     return this.resellerId; 
    } 
    public void setResellerID(String resellerId){ 
     this.resellerId = resellerId; 
    } 
    } 

Action类:

public class TestJsp extends Action { 
Logger logger = Logger.getLogger(this.getClass()); 
@Override 
public ActionForward execute(ActionMapping map, ActionForm actionForm, 
     HttpServletRequest request, HttpServletResponse response) throws Exception{ 
ActionForward forward = null; 
     GetAvailableAddress form = (GetAvailableAddress) actionForm; 
form.intilize(); 
forward = map.findForward("init"); 
     return forward; 
}} 

回答

3

看起来你的getter和setter对于ressellerId字段在GetAvailableAddressRequest类中没有正确命名。您正在使用的ID在方法名称,而不是标识下面 更正签名的末尾:

public String getResellerId(){ 
     return this.resellerId; 
    } 
    public void setResellerId(String resellerId){ 
     this.resellerId = resellerId; 
    } 
0

记住,输入标签的属性名必须在行动的形式与getter方法名称相匹配

样品: 在jsp

<html:textarea property="productDescription" rows="15" cols="50" > 
</html:textarea> 

在动作形式

public String getProductDescription() { 
    return productDescription; 
} 
相关问题