jsf - 如何注入(inject)不同的子类作为 ManagedProperty JSF 2?

我是 JSF 的新手,我想知道是否可以根据不同的情况将基类的不同子类作为 MangedProperty 注入(inject)?例如,我有这个托管 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 ManagedProperty 注入(inject)到 Claim 托管 bean 中。由于我不能为这两个子类提供相同的托管 bean 名称,而且我事先不知道需要注入(inject)哪一个,这是否可以在 JSF 中完成?还是我应该考虑其他方法?

谢谢!

最佳答案

你不能也不应该。

  • 无法将请求范围内的值作为托管属性注入(inject)到 session 范围内的 bean 中。
  • 不应将实体视为托管 bean。

而是将其作为方法参数传递:

<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) {
    // ...
}

https://stackoverflow.com/questions/7517257/

相关文章:

sql - TABLOCK 和 TABLOCKX 定义示例

asp.net - NHibernate:获取所有打开的 session

msbuild - 如何转储从 MSBuild 导入的属性表列表

python - 在 Matplotlib 中设置颜色图的范围

maven-2 - Maven : Could not transfer artifact Erro

PHP 5.2 无法解释 - 文件停止正常执行

database-design - ERD - 鱼尾纹符号

php - 从我的 Wordpress 插件中更改 wp_title

sql-server - 从游标源 SQL Server 中删除行

python - 如何在 setup.py 中为 cython 设置 sysroot