我是JSF的新手,我想知道是否有可能将基类的不同子类注入MangedProperty,具体取决于不同的情况?例如,我有这个托管bean:
@ManagedBean
@SessionScoped
public class Claim implements Serializable {
private Loss lossDetails; //need to inject one of two subclasses
}
以下基类:
public class Loss implements Serializable {
private String lossCause;
private String lossDescription;
}
其中有两个子类:
public class AutoLoss extends Loss implements Serializable {
private List<String> vehicles;
//...
}
public class PropLoss extends Loss implements Serializable {
private String property;
private boolean weatherRelated;
//...
}
根据我在应用程序的JSF页面上所做的选择,我想在lossDetails
托管bean中注入一个子类作为Claim
ManagedProperty。既然我不能给这两个子类提供相同的托管bean名称,并且我不知道哪个需要注入,那么这可以在JSF中完成吗?或者我应该考虑采用不同的方法吗?
谢谢!
答案 0 :(得分:2)
你不能也不应该。
而是将其作为方法参数传递:
<h:dataTable value="#{lossManager.losses}" var="loss">
<h:column>
<h:commandButton value="Claim" action="#{claim.doAction(loss)}" />
</h:column>
</h:dataTable>
使用Claim
托管bean:
public void doAction(Loss loss) {
// ...
}