【问题标题】:Trouble setting default value for a member variable in JSF在 JSF 中为成员变量设置默认值时遇到问题
【发布时间】:2012-08-21 18:45:42
【问题描述】:
package no.northcreek.mabjo;
import javax.annotation.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class indexBean {

    @ManagedProperty(value="defaultValue")
    private String firstName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }  
}

所以上面是我希望创建默认值为“defaultValue”的 firstName 成员变量的代码。但是该值为空。为什么?

【问题讨论】:

  • 事实上,当应用在不同的环境 (OS) 上时,这段代码就像黄油刀一样。所以我猜你可能会争辩说,@ManagedProperty 从未打算提供默认标量值,但它可以用于此目的。

标签: jsf-2 managed-bean


【解决方案1】:

看来你误解了@ManagedProperty

的用法

@ManagedProperty 注解用于将一个托管 bean 依赖注入 (DI) 到另一个托管 bean 的属性中。

并注意 value 应该指向一个 ELxpression ,像这样:value="#{someBean}"

在您的情况下,您应该执行以下操作

private String firstName = "defaultValue";

@PostConstruct 中初始化firstName 的值

@PostConstruct
public void init() {
  firstName = "defaultValue";
}

看看这个例子...

Injecting Managed beans in JSF 2.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    相关资源
    最近更新 更多