当f:viewParam是调用者时,为什么在调用setter之前调用属性调用者?

时间:2016-05-16 07:05:51

标签: jsf getter-setter viewparams

抱歉标题错误,请随时编辑。

所以我有这段代码:

<h:outputLink value="goodbye.xhtml">
    Go to goodbye!
    <f:param name="msg" value="test_one" />
</h:outputLink>

所以点击后,我会以 goodbye.xhtml 结尾,其代码如下:

<f:view>
    <f:metadata>
        <f:viewParam name="msg" value="#{blahBlah.parameter}"/>
    </f:metadata>
    <h:body>
        #{blahBlah.parameter}
    </h:body>
</f:view>

所以当我按照以下方式使用BlahBlah.java时:

@ManagedBean
@SessionScoped
public class BlahBlah {
    private String parameter;
    public String getParameter() {
        return parameter;
    }
    public void setParameter(String parameter) {
        if (parameter.equals("test_one")) {
            this.parameter = "test_one_modified";
            return;
        }
        this.parameter = parameter;
    }
}

我会在 goodbye.xhtml 上看到 test_one_modified ,这很好。

但是当我按照以下方式修改BlahBlah.java时:

@ManagedBean
@SessionScoped
public class BlahBlah {
    private String parameter;
    public String getParameter() {
        if (parameter.equals("test_one")) {
            this.parameter = "test_one_modified";
        }
        return parameter;
    }
    public void setParameter(String parameter) {
        this.parameter = parameter;
    }
}

我期望再次看到 test_one_modified ,但我会得到一个不错的空指针异常

不是

<f:viewParam name="msg" value="#{blahBlah.parameter}"/>

应该设置 BlahBlah.parameter?

0 个答案:

没有答案