Question

I need to print the even numbers between a given range of numbers. The upper and lower bounds are set using the setters in the bean. Following is the code that I am using:

package com.bean.animesh;

public class classOfBean implements java.io.Serializable {
private int lowerLimit;
private int upperLimit;
public List<Integer> evenList;

public classOfBean() {

}
public int getLowerLimit() {
    return lowerLimit;
}
public int getUpperLimit() {
    return upperLimit;
}
public void setLowerLimit(int lowerLimit) {
    this.lowerLimit = lowerLimit;
}
public void setUpperLimit(int upperLimit) {
    this.upperLimit = upperLimit;
}
public void setEvenList() {
    List<Integer> evenNumbers = new ArrayList<Integer>();
    for (int i = getLowerLimit(); i <= getUpperLimit(); ++i) {
        evenNumbers.add(i);
    }
    this.evenList = Numbers;
}
public List<Integer> getEvenList() {
    return evenList;
}
}

And this is the JSP page:

<jsp:useBean id="evens" class="com.bean.animesh.classOfBean" scope="session">
<jsp:setProperty name="evens" property="lowerLimit" param="lower"/>
<jsp:setProperty name="evens" property="upperLimit" param="upper"/>
<jsp:setProperty name="evens" property="evenList"/>
</jsp:useBean>

<p>Lower Limit: 
    <jsp:getProperty name="evens" property="lowerLimit"/>
</p>

<p>Upper Limit: 
    <jsp:getProperty name="evens" property="upperLimit"/>
</p>

<p>The list:
    <jsp:getProperty name="evens" property="evenList"/>
</p>

lowerLimit and upperLimit are printed correctly, but when I add the code for evenList, I always get this error Can't find a method to write property 'evenList' of type 'java.util.List' in a bean of type 'com.bean.animesh.classOfBean'.

New Edit:

I edited the bean's methods where the method returns a string rather than an integer list. Now I don't get any error but I get null when I print the returned value by the method. How am I supposed the get the list of the even numbers?

public void setEvenList(String evenList) {
    List<Integer> evenNumbers = new ArrayList<Integer>();
    for (int i = getLowerLimit(); i <= getUpperLimit(); ++i) {
        if (i%2 == 0) {
            evenNumbers.add(i);
        }
    }
    String listString = evenNumbers.toString();
    listString = listString.substring(1, (listString.length())-1);
    System.out.println(listString);
    this.evenList = listString;
}
public String getEvenList() {
    return evenList;
}

What am I doing wrong? Are there any alternatives in Java beans to solve this problem?

Was it helpful?

Solution 2

By changing the bean methods setEvenList and getEvenList return a String rather than an integer list like this:

public void setEvenList(String listString) {
    List<Integer> evenNumbers = new ArrayList<Integer>();
    for (int i = getLowerLimit(); i <= getUpperLimit(); ++i) {
        if (i%2 == 0) {
            evenNumbers.add(i);
        }
    }
    listString = evenNumbers.toString();
    listString = listString.substring(1, (listString.length())-1);
    System.out.println(listString);
    this.evenList = listString;
}
public String getEvenList() {
    return evenList;
}

and making the setProperty and getProperty for the evenList to be like this:

<jsp:setProperty name="evens" property="evenList" value="0"/>
<jsp:getProperty name="evens" property="evenList"/>

will print the required output.

Thanks everyone for your input.

OTHER TIPS

setEvenList must take an argument of the same type that getEvenList returns. This is standard bean practice.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top