JSF + primefaces dialog problem

0

Witam

Mam taki oto problem. Mam klasę kontrolera (Managed bean) i taki oto skrawek widoku:

<h:commandButton styleClass="myButton" id="deleteButton" value="Usuń">
                                                <f:setPropertyActionListener target="#{myTermsManagedBean.id}" value="#{term.idtermins}" />
                                                <f:ajax event="action" onevent="eventDialog.show()"/>                      
                                            </h:commandButton>

<p:dialog widgetVar="eventDialog" header="Potwierdzenie" showEffect="clip" hideEffect="clip">
                                        <h:panelGrid id="eventDetails" columns="2">
                                            <h:outputLabel for="title" value="Czy chcesz usunąć termin?" />
                                            <h:outputText value="&#10;" />
                                            <p:commandButton id="addButton" widgetVar="addButton2" value="Tak" actionListener="#{myTermsManagedBean.deleteTerminFromDataBase()}" onkeyup="pbAjax.start();" oncomplete="eventDialog.hide();"/>
                                            <p:commandButton id="cancelButton" widgetVar="cancelButton2" type="Nie" value="Nie" oncomplete="eventDialog.hide();" />
                                        </h:panelGrid>
                                    </p:dialog>

Kiedy za pomocą f:setPropertyActionListener ustawiam parametr id wszystko jest ok (sprawdzałem pod debugerem) ale w momencie odpalenia się dialogu id równa się 0. Jeżeli ustawię Scope mojego Managed beana na session to wszystko jest OK, ale mi zależy aby był request. Czy ktoś może mi coś doradzić?. Z góry dzieki.

0

Ponawiam pytanie, czy jest jakaś możliwość aby ustawić parametr mając Managed bean o zasięgu request. Widok zawiera wszystkie terminy. Po kliknięciu w button usuń przy danym terminie przekazuję jego id do Managed beana i go usuwam. Po usunięciu zależy mi aby widok się odświeżył, tak samo jak po dodaniu nowego terminu. Jak daję @Scope("view") to dostaje błąd (No Scope registered for scope 'view'). Czy może ktoś mi zaproponować jakieś inne rozwiązanie.??

@ManagedBean
@Controller
@Scope("request")
public class MyTermsManagedBean {

    @Autowired
    private TerminsDAO terminsDAO;
    @Autowired
    private ClientDAO clientDAO;
    @Autowired
    private DoctorDAO doctorDAO;
    
    private Client client;
    private ArrayList<Termins> terms = new ArrayList<Termins>();
    
    private int id;

    public MyTermsManagedBean() {
    }

    @PostConstruct
    public void init() {
        getCurrentLoggedClient();
        getTermsForLoggedClient();
    }

    private void getCurrentLoggedClient() {
        client = getClientByEmail();
    }

    private Client getClientByEmail() {
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        String name = auth.getName(); //get logged in username
        ArrayList<Client> c = (ArrayList<Client>) clientDAO.getClientByEmail(name);
        return c.get(0);
    }

    private void getTermsForLoggedClient() {
        terms = (ArrayList<Termins>) terminsDAO.getTermsByClientID(client);
    }
    
    public void deleteTerminFromDataBase() {
        Termins t = terminsDAO.getTermByID(id);
        t.setDeleted(1);
        terminsDAO.setTermDeleted(t);
    }
    
    //SETTERS GETTERS

1 użytkowników online, w tym zalogowanych: 0, gości: 1