Hi
I am trying to change registration example in order to work with JBpm. but at the first
page it is a button with action #"{register.register}"
I define in pageflow if the user already exists tnot change the current page and if not,
go to next page, but It calls action register first and it check the database and because
user is not exist then that action persist the data into the database and that action is
calling again and in the second time, that user already persisted so the current page
staty intact and a message will be displayed.
here is pageflow definition file:
| <pageflow-definition name="SeamPracticePageFlow">
|
| <start-page name="start" view-id="/pages/register.jsp">
| <transition name="register" to="checkUser" />
| </start-page>
|
| <decision name="checkUser"
expression="#{register.alreadyExists}" >
| <transition name="false" to="registered" >
| <action expression="#{register.register}" />
| </transition>
| <transition name="true" to="start" />
| </decision>
|
| <page name="registered" view-id="/pages/registered.jsp">
| <redirect/>
| <transition name="welcomeMessage" to="listMessage" >
| <action expression="/pages/messages.seam" />
| </transition>
| </page>
|
| <page name="listMessage" view-id="/pages/messages.jsp">
| <redirect/>
| <end-conversation/>
| </page>
|
| </pageflow-definition>
|
and jsp file:
| <f:view>
| <h:form>
| <table border="0">
| <s:validateAll>
| <tr>
| <td>Username</td>
| <td><h:inputText value="#{user.username}"
required="true"/></td>
| </tr>
| <tr>
| <td>Full Name</td>
| <td><h:inputText value="#{user.fullName}"
required="true"/></td>
| </tr>
| <tr>
| <td>Password</td>
| <td><h:inputSecret value="#{user.password}"
required="true"/></td>
| </tr>
| </s:validateAll>
| </table>
| <h:messages/>
| <h:commandButton type="submit" value="Register"
action="#{register.register}"/>
| </h:form>
| </f:view>
|
and the action:
| @Create
| @Begin(join=true,pageflow="SeamPracticePageFlow")
| public void register() {
| try {
| if(isAlreadyExists()) {
| userNotExists = false;
| em.persist(user);
| logger.info("user #{user.username} registered.");
| //return "/pages/registered.jsp";
| }else {
| logger.info("user #{user.username} already registered.");
| userNotExists = true;
| }
| } catch (Exception e) {
| e.printStackTrace();
| }
|
| }
|
| public boolean isUserNotExists() {
| return userNotExists;
| }
|
| public boolean isAlreadyExists() {
| try {
| List registered = em.createQuery("select username from User where username =
:u")
| .setParameter("u",user.getUsername())
| .getResultList();
| if(registered == null || registered.size() == 0) {
| return true;
| }else {
| FacesMessages.instance().add("user #{user.username} already exists.");
| return false;
| }
| }catch(Exception e) {
| e.printStackTrace();
| }
| FacesMessages.instance().add("something's wrong...");
| return false;
| }
|
|
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3981675#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...