Problem z get w Bean JSF - aktualizacja zmiennej w SessionBean

0

Mam dialog słuzący do dowania komentarza, wygląda o tak:

<p:dialog id="hrCommentDialog" header="Dodaj komentarz: " widgetVar="hrCommentDialog" showEffect="clip" hideEffect="clip" closable="false" resizable="false" dynamic="true" modal="true">                              
                    <h:panelGrid columns="2" cellpadding="5" >                  
                        <p:outputLabel value="Komentrz: " />
                        <p:inputText  id="commentInputField" value="#{hrBean.comment}" maxlength="256"/>                                          
                     </h:panelGrid>                         
                                              
                                <p:commandButton id="zapiszButton" value="Zapisz"  oncomplete="PF('hrCommentDialog').hide();">                                   
                                    <f:ajax event="click" listener="#{hrBean.commentRequest()}" /> 
                                </p:commandButton>                                               
 </p:dialog> 

Uruchamiam jego wyświetlenie przyciskiem umieszczonym w tabeli z danymi. Dane dotyczą konkretnego wiersza. Przed jego wyśwwietleniem wykonuje ponizszy kod. Tym samy aktualizuje wartośc comment na te z przetwarzanego obiektu i wyświetlam ją w zaktualizowanym przez update dialogu:

  public void showCommentWindow(Request request){
     autualRequest = request;  
     comment = request.getComment();
     
     RequestContext.getCurrentInstance().update("menuForm:tabs:hrCommentDialog");
     RequestContext.getCurrentInstance().execute("PF('hrCommentDialog').show();");
   }

Do tej pory wszystko działa ok, problem pojawia się kiedy zmieniam wartośc w wyświetlanym dialogu, i zapisuje przyciskiem: zapiszButton. Wykonuje się poniższy kod, czyli zapis do badzy danych. Problem w tym że nie aktualizuje mi się zmienna commment, pozostaje tą wyświetlona na początku. Nie wiem dlaczego

public void commentRequest(){

   try {
        DAO.RequestDAO.addCommentRequest(autualRequest, comment);
        m.zmianyZapisane();}
   catch (IOException ex) {Logger.getLogger(HrBean.class.getName()).log(Level.SEVERE, null, ex);
                           m.zmianyNieZapisane();}
   
   HrBean.update();
   RequestContext.getCurrentInstance().update("menuForm:tabs:hrTabs:hrDataTable");
}   

@ManagedBean
@SessionScoped
public class HrBean {

String comment;

public HrBean() {
            
        comment = new String();
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }
}
0

Przepraszam za offtopic.. ale:

Nie rozumiem gdzie masz problem i co to jest HrBean.update(), które wyciąłeś. Ale zanim się okaże, ze gdzieś się pomyliłeś w id, nie dałeś h:form czy view. czy też listener nie wywołuje sie w tej fazie JSF gdzie są zmienione wartości w bean (na szczeście tego wszystkiego już nie pamiętam).. to mam dla Ciebie taką radę: UCIEKAJ. JSF zeżre Ci mózg - to zombiak i jeden z najgorszych frameworków do web (konkurencja w tej dziedzinie jest ostra -to fakt).

0

zapiszButton też nigdzie nie ma.
Tak sobie czasami myślę, że gdyby programiści poświęcili np. na medycynę tyle mocy umysłowej co poświęcają na walkę z chorymi frameworkami, to lek na raka już dawno zostałby wynaleziony

0

Okazało sie że lepiej nie używać ajax (wszystko działa), dlaczego nie wiem. I nie znalazłem odpowiedzi na to pytanie. ;/

 <p:commandButton id="zapiszButton"  action="#{hrBean.commentRequest()}" value="Zapisz"  oncomplete="PF('hrCommentDialog').hide();"/>         

I faktycznie mam jeszcze kilka takich kejsów których nie potrafie wytłumaczyć.

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