java - 托管属性从 jsf 1.2 迁移到 2.1

标签 java jsf jsf-2

我是 JSF 新手,我正在寻找与托管属性相关的几个问题的答案。

我正在使用非常旧的代码,并尝试更新它。

<managed-bean>
  <managed-bean-name>bean</managed-bean-name>
  <managed-bean-class>com.example.Bean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
  <managed-property>
    <property-name>serviceLocalizator</property-name>
    <value>#{serviceLocalizator}</value>
  </managed-property>
  <managed-property>
    <property-name>market</property-name>
    <value>#{param['market']}</value>
  </managed-property>
  <managed-property>
    <property-name>produktId</property-name>
    <value>#{param['produkt.id']}</value>
  </managed-property>
</managed-bean>

在 Bean 类中,市场是 setter,产品是 getter,市场是另一个类的一部分。

private SomeClass daneIn;

public void setMarket(Long market) {
    this.daneIn.setMarket( market );
}

private SomeClass2 produkt;

public  SomeClass2 getProdukt() {       
    return produkt;
}

对于productIdserviceLocalizator没有 setter 和 getter。 还有更多属性,例如“market”与“daneIn”相关。

谁能解释一下为什么:

  1. 当我删除 <managet-property> 时我有 ServiceLocalizator 的空指针异常,尽管我调用静态方法。我应该读什么才能理解它?
  2. 为什么 faces-config 使用括号[],而不是点?是用POST还是GET连接?
  3. 我可以使用 @ManagedProperty对于 daneIn 的“市场”和其他属性?如果是,怎么做?

最佳答案

1) 通过“当我删除时”,我假设您正在删除为 ServiceLocalizator 定义的托管属性。由于没有注入(inject)属性的指令,因此该变量将为空。使用它会导致 NPE。

2) 方括号符号有多种用途,包括涵盖您的情况的用途。您可以通过映射的键获取映射的值,但这里您获取的是带括号的 'produkt.id' 元素的值,因为用作键的值包含一个或多个句点。如果删除句点,也可以使用 #{param.produktid}。 (感谢 BalusC 的指导)

3) 您必须声明要使用注释注入(inject)的属性并提供 setter。

public class YourBean {

    //Also, you can use #{param['market']} as the value of the ManagedProperty        
    @ManagedProperty(value = "#{param.market}")
    private Long market;

    public void setMarket(Long market) {
        this.market = market;
    }

}

关于java - 托管属性从 jsf 1.2 迁移到 2.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12606913/

相关文章:

java - eDirectory 查询返回不愿意执行 LDAPSearchException

java - void 方法的单元测试

JSF 输出文本条件显示/样式。视情况而异

javascript - Primefaces javascript 延迟解析

java - JSF2.0 + Eclipse

java - 如何从我的 carList 中获取总价?

Java 集合。员工商店的集合

css - 使用 Primefaces 在 Internet Explorer 8/9 上长时间拉伸(stretch)页面

jsf-2 - 如何将已通过身份验证的用户从登录页面重定向到主页

java - JSF应用程序: Open file,无法下载