0

sessionScoped マネージド Bean から viewScoped マネージド Bean を取得する必要があります。最初に@ManagedPropertyアノテーションを使用してみましたが、すぐに機能しないことがわかり、その理由がわかりました。次に、次の方法を使用しようとしました。

Map<String, Object> viewMap = FacesContext.getCurrentInstance().getViewRoot().getViewMap();   
PulsantieraBean pulsantiera = (PulsantieraBean) viewMap.get("#{pulsantiera}");

しかし、デバッグでオブジェクトにアクセスすると、pulsantiera は null で、viewMap オブジェクトには別の viewScoped マネージド Bean のみが含まれます。PulsantieraBeanクラスは次のように宣言されます

@ViewScoped
@ManagedBean(name = NomeBean.PULSANTIERA)
public class PulsantieraBean extends ControllerBaseBean implements Serializable {

一方、リクエストを行うクラスは次のように宣言されています

@SessionScoped
@ManagedBean(name = NomeBean.IDF_TAB_IMPORTI)
public class IdfTabImportiBean extends ControllerBaseBean implements Serializable {

viewScoped マネージド Bean PulsantieraBeanが存在することが確実なメソッド内でリクエストを行います。

どんな助けでも大歓迎です。ありがとう、マルコ

4

1 に答える 1

-1
@Named(value = "controladorMB")
@SessionScoped
public class ControladorMB implements Serializable {}

ListadoFacturasMB から ControladorMB を呼び出す

@Named(value = "listadoFacturasMB")
@SessionScoped
public class ListadoFacturasMB implements Serializable {

public void example() {
    try {
        FacesContext ctx = FacesContext.getCurrentInstance();
        ValueExpression vex =ctx.getApplication().getExpressionFactory().createValueExpression(ctx.getELContext(), "#{controladorMB}", ControladorMB.class);
        ControladorMB gMB = (ControladorMB) vex.getValue(ctx.getELContext());
       } catch (Exception e) {
        JsfUtil.addErrorMessage(e, "Error: buscarPersonalizado() " + e.getMessage());
       }
   }
}
于 2014-10-30T17:58:04.353 に答える