Simon P
Simon P

Reputation: 380

JSF 2.0 Edit user szenario

I have programmed a little application in which you can register and edit your data. For the authenticity I used a bean class called Authenticity. This class contains an object of Customer (which is a database entity) and methods to login and to logout.

Now I´ve created a page for editing the user: A form with many inputTexts which have the value of authenticity.curUser./(properties). It look like this:

      <h:form>
        <h:panelGrid columns="2" cellpadding="4px" width="600">
            <h:outputText value="firstname:" />
            <h:inputText value="#{authenticity.curUser.firstname}"/>

            <h:outputText value="lastname:"/>
            <h:inputText value="#{authenticity.curUser.lastname}" />

            <h:outputText value="street:"/>
            <h:inputText value="#{authenticity.curUser.street}" />

            <h:outputText value="housebumber"/>
            <h:inputText value="#{authenticity.curUser.housenumber}" />

            <h:outputText value="Zip:"/>
            <h:inputText value="#{authenticity.curUser.zip}" />

            <h:outputText value="City:"/>
            <h:inputText value="#{authenticity.curUser.city}" />

            <h:outputText value="Land"/>
            <h:inputText value="#{authenticity.curUser.country}" />

            <h:outputText value="email:"/>
            <h:inputText value="#{authenticity.curUser.email}" />

            <h:outputText value="password:"/>
            <h:inputSecret value="#{authenticity.curUser.password}" />
            <h:commandButton action="#{authenticity.editUser}" value="Edit" />
        </h:panelGrid> 
    </h:form>

My question now is whether there are better solutions for this problem. Should a AuthenticityBean be actually able to edit the user? Or should I create a extra bean?

Upvotes: 1

Views: 260

Answers (1)

BalusC
BalusC

Reputation: 1109625

I would use a completely separate view scoped bean which holds a brand new copy of the entity representing the logged-in user. Only when the form is successfully edited and saved, then the currently logged-in user can be replaced (the form bean can just access it as a @ManagedProperty).

If you were reusing the same entity in the form; imagine that you're ajax-updating some fields and then cancels/closes the form. The currently logged-in user would then still have the "Wrong" field values in the remnant of the session. This is not correct.

Upvotes: 2

Related Questions