我是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;
}
对于productId
和serviceLocalizator
,没有设置器和getter。有更多的属性,如“市场”与“daneIn”相关。
有谁能解释一下为什么:
<managet-property>
时,虽然我调用了静态方法,但对于ServiceLocalizator
我有空指针异常。我应该读些什么来理解它呢?@ManagedProperty
用于“市场”和来自daneIn的其他属性吗?如果是,怎么做?发布于 2012-09-26 17:29:39
1)“当我删除”时,我假设您正在删除为ServiceLocalizator定义的托管属性。由于没有注入属性的指令,该变量将为null。使用它将导致NPE。
2)括号符号用于各种用途,包括涵盖您的情况的标记。您可以通过映射的键获得映射的值,但是在这里可以获得带有括号的'produkt.id'
元素的值,因为用作键的值包含一个或多个句点。如果删除句点,也可以使用#{param.produktid}
。(谢谢BalusC在这篇文章中给出的说明)
3)您必须声明要注入的属性,并提供一个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;
}
}
https://stackoverflow.com/questions/12606913
复制相似问题