Werte werden erst nach aktualisieren des Browser Fensters aktualisiert

Hallo

Mein Problem: Ich klicke auf auf einen Button(1) und speichere die 1 in einem Bean. Direkt nach dem Klick in einem Pop Up sollt edie 1 angezeigt werden, es wird aber nichts angezeigt. Jetzt aktualisiere ich den Browser und klicke auf Button(2), jetzt wird in einem PopUp eine 1 angezeigt, wenn ich das ganze wiederhole dann wird mir die 2 angezeigt. Also es immer nicht das was ich jetzt angeklickt habe sondern was ich davor angeklickt habe.


                            <p:commandButton value="open" onclick="PF('confD').show();" image="#{recipeList.id}.jpg" action="#{selection.myTest}"   >
                                <f:setPropertyActionListener target="#{selection.myId}" value="#{recipeList.id}" />
                           	
                            </p:commandButton>



@ManagedBean(name = "selection")
@RequestScoped
public class Selection implements Serializable{

  
    
    private RecipeJpaController jpacontroller;

    @PersistenceUnit(unitName = "de.lo_Leckermich_war_1.0-SNAPSHOTPU")
    EntityManagerFactory emf;
    @Resource //inject from your application server 
    UserTransaction utx;
    private String action;
    private static String myId;
    /**
     * Creates a new instance of Selection
     */
    public Selection() {

    }

    @PostConstruct
    public void init() {
        jpacontroller = new RecipeJpaController(utx, emf);
    }

    public String myTest(){
        System.out.println("XXX TEST "+ getMyId());
        return myId;
    }

    public String getMyId() {
        System.out.println("XXX GET "+myId);
        return myId;
    }

    public void setMyId(String m) {
        myId = m;
    }

    
}

Es geht um die Variable

  private static String myId;

sie war früher nicht static, ich habe es aus verzweiflung mal probiert. Ebenso alle scopes. Ich habe es einfach noch nicht verstanden wie ich an einer Stelle was speichere und dann an einer anderen Stelle es abrufen kann.

Ich denke das Problem liegt in deiner View: Versuch mal im CommandButton das Attribut ‚update=„id-deines-popups“‘ zu setzen. Du sagst dem Popup ja nicht, dass es sich aktualisieren soll, woher soll es das wissen? :wink:

CommandButton hat keinen Attribut update.

Der Primefaces Commandbutton hat natürlich ein update-Attribute: PrimeFaces ShowCase

Noch ein paar Hinweise:

  • @ManagedBean ist die Annotation aus JSF. Diese sollte eigentlich nicht mehr verwendet werden. Nutze hier (wenn möglich) die CDI Annotation @Named
  • Einen Constructor benötigt die Bean nicht explizit. Den hat die diese Klasse automatisch
  • und natürlich sollte die myId nicht static sein.

Gruß