在JavaBean中,什么调用setter方法?

时间:2013-12-11 19:12:57

标签: java javabeans getter-setter

我正在努力学习如何在Java Bean中调用getter / setter方法。我没有看到教程(https://netbeans.org/kb/docs/web/jsf20-intro.html)调用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,这是其他语言的典型特征。我很乐意这样做,但根据我所读到的内容,我不确定这是否正确。

任何帮助或澄清将不胜感激。

谢谢,

3 个答案:

答案 0 :(得分:2)

Java bean定义行为by convention

  • 一个类有一个默认的公共构造函数,它没有参数(或者,基本上没有构造函数)。
  • 使用getter和setter约定访问类属性 - 即getWebServiceResponse()setWebServiceResponse(String response)
  • bean中唯一存在的方法是与字段交互的方法 - 即每个字段的setter和getter。如果你有final字段,那么这会改变(你只能有一个吸气剂)。

setter中没有参数违反了这一惯例。

另外,在你的getter中调用你的setter是不好的风格 - setter背后的想法是它只设置一个字段,而getter只返回该字段内的任何值 - 即使它是{{1} }。我也会删除你的二传手的电话。

最后,null无效 - 您可能打算返回public someJavaBean()

答案 1 :(得分:1)

你的setter方法需要一个参数:

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

答案 2 :(得分: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); 

    }
}