2014-03-02 11 views
0

我需要在給定範圍的數字之間打印偶數。上下限是使用bean中的setter設置的。以下是我使用的代碼:使用由Java Bean的getproperty返回的值進行進一步處理

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; 
} 
} 

這是JSP頁面:

<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> 

lowerLimitupperLimit正確打印,但是當我添加代碼evenList,我總是得到這個錯誤Can't find a method to write property 'evenList' of type 'java.util.List' in a bean of type 'com.bean.animesh.classOfBean'

新編輯:

我編輯了bean的方法,其中方法返回一個字符串,而不是一個整數列表。現在我沒有得到任何錯誤,但是當我通過方法打印返回的值時,我得到了null。 我如何得到偶數的列表?

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; 
} 

我在做什麼錯了? Java bean中是否有其他解決方案來解決這個問題?

+0

您的Bean中沒有名爲'getEvenList'的getter - 您的方法名爲'getAllNos'。改變你的JSP或你的Bean。請始終使用[Java命名約定](http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-135099.html#367) - 您有一個位於'lowerCamelCase'中的類和一個變量'PascalCase';這會讓你的代碼難以閱讀。 –

+0

@BoristheSpider 我編輯了這個問題。你可能會再次經歷它。 –

回答

0

通過改變bean的方法setEvenList和getEvenList返回一個字符串,而不是整數,列表如下:

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; 
} 

並使setPropertygetPropertyevenList是這樣的:

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

將打印所需的輸出。

謝謝大家的意見。

0

setEvenList必須採用getEvenList返回的相同類型的參數。這是標準的bean的做法。

+0

我已根據您的建議對問題進行了編輯。你可以看看它。 –

相關問題