2013-12-11 28 views
0

我正在努力如何在Java Bean中調用getter/setter方法。我沒有看到調用setter方法的教程示例(https://netbeans.org/kb/docs/web/jsf20-intro.html),但顯然設置了這些值。在JavaBean中,什麼叫setter方法?

因此,我無法確定我的setter方法正在被調用。例如...

@Named(value = "someJavaBean") 
@SessionScoped 
public class someJavaBeanSerializable { 

    String webServiceResponse; 

    public void setWebServiceResponse() { 
     this.webServiceResponse = "Just a test"; 
    } 

    public String getWebServiceResponse() { 
     this.setWebServiceResponse(); 
     return this.webServiceResponse; 
    } 

    public someJavaBean() { 
     System.out.println("You are in someJavaBean"); 
    } 
} 

看來,我必須以手動調用setWebSErviceResponse()的setter方法來運行這是典型的其他語言。我很好,但根據我讀過的內容,我不確定這是否正確。

任何幫助或澄清,將不勝感激。

謝謝

回答

1

你的setter方法需要一個參數:

public void setWebServiceResponse(String webServiceResponse) { 
    this.webServiceResponse = webServiceResponse; 
} 
+0

謝謝澄清,但這是否意味着我仍然需要調用setWebServiceResponse(「Some string value」);它會執行之前? – Trebor

+1

_Something_必須調用setter。它取決於您使用此對象的上下文。如果您正在使用某個試圖設置「webServiceResponse」屬性值的庫(如JSF的某個部分),它將調用'setWebServiceResponse(String)',因爲這是JavaBean約定。 –

2

的Java bean定義行爲by convention

  • 一類具有不帶參數給它一個默認的公共構造(或者,基本上沒有構造函數)。
  • 使用getter和setters約定來訪問類屬性 - 即getWebServiceResponse()setWebServiceResponse(String response)
  • bean中唯一存在的方法是與字段交互的方法 - 即每個字段的setter和getter。如果你有一個final字段,那麼這將改變(你只能有一個吸氣)。

在您的設置器中沒有參數違反了這個約定。

另外,在你的getter中調用你的setter是一種糟糕的風格 - setter背後的想法是它只設置一個字段,並且getter只返回該字段內的任何值 - 即使它是null。我也會刪除給你的setter的電話。

最後,public someJavaBean()無效 - 您可能打算返回void

+0

謝謝,但我認爲*我*仍然缺少重點。我從我的getter中調用setter的唯一原因是因爲我的setter沒有執行,即使我向setter添加了String參數。我也沒有改正publicJavaBean()以及謝謝你。 – Trebor

0

抱歉密集。在教程的以下代碼中(https://netbeans.org/kb/docs/web/jsf20-intro.html),setter調用的是什麼?

@ManagedBean (name="UserNumberBean") 
@SessionScoped 
public class UserNumberBean implements Serializable{ 

    Integer randomInt; 
    Integer userNumber; 
    String response; 

    public String getResponse() { 
     if ((userNumber != null) && (userNumber.compareTo(randomInt) == 0)) { 

     //invalidate user session 
     FacesContext context = FacesContext.getCurrentInstance(); 
     HttpSession session = (HttpSession) context.getExternalContext().getSession(false); 
     session.invalidate(); 

     return "Yay! You got it!"; 
    } else { 

     return "<p>Sorry, " + userNumber + " isn't it.</p>" 
       + "<p>Guess again...</p>"; 
    } 
    } 

    public Integer getUserNumber() { 
     return userNumber; 
    } 

    public void setUserNumber(Integer userNumber) { 
     this.userNumber = userNumber; 
    } 
    /** 
    * Creates a new instance of UserNumberBean 
    */ 
    public UserNumberBean() { 
     Random randomGR = new Random(); 
     randomInt = new Integer(randomGR.nextInt(10)); 
     System.out.println("Duke's number : " + randomInt); 

    } 
}