[jboss-user] [JBoss Seam] - Re: Validation with pageflows

sonstone do-not-reply at jboss.com
Tue Jan 23 09:29:34 EST 2007


Here is some code:

The beans:

  | @Entity
  | @Name("payment")
  | @Scope(ScopeType.CONVERSATION)
  | public class PaymentBean implements Payment {
  |    
  |    @NotNull
  |    @Length(max=12,min=10)
  |    @Pattern(regex="^[a-zA-Z0-9]+$", message="Must be alphanumeric.")
  |    private String accountNumber;
  |     
  |    public String getAccountNumber() {
  |        return accountNumber;
  |    }
  |    
  |    public void setAccountNumber(final String accountNumber) {
  |        System.out.println("Setting accountNumber to: " + accountNumber);
  |        this.accountNumber = accountNumber;
  |    }
  |    
  |    @Begin(join=true)
  |    public void begin()
  |    {
  |        System.out.println("PaymentBean.begin()");
  |    }
  |    
  | }
  | 
  | @Name("paymentAction")
  | @Stateful
  | @Scope(ScopeType.CONVERSATION)
  | public class PaymentActionBean implements PaymentAction {
  | 
  |    @In(create=true) 
  |    @Valid
  |    private Payment payment;
  |     
  |    @Create @Begin(join=true)
  |    public void begin()
  |    {
  |        System.out.println("PaymentActionBean.begin()");
  |    }
  |    
  |    @Remove
  |    @Destroy
  |    public void destroy() {
  |        System.out.println("PaymentActionBean.destroy()");
  |    }
  | 
  |    @IfInvalid(outcome = Outcome.REDISPLAY)
  |    public void doAuthenticate()
  |    {
  |        System.out.println(payment.getAccountNumber());
  |        System.out.println("I am authenticating");
  |    }
  |    
  |    ...
  | }
  | 
  | 

Here is the flow:

  | <pageflow-definition name="payment-flow">
  |    
  |    <start-page name="authenticate" view-id="/authenticate.jspx">
  |       <redirect/>
  |       <transition to="authenticate">
  |       </transition>
  |       <transition name="doAuthenticate" to="confirm">
  |          <action expression="#{paymentAction.doAuthenticate}"/>
  |       </transition>
  |    </start-page>
  | 
  |    <page name="confirm" view-id="/confirm.jspx">
  |       <redirect/>
  |       <transition name="doConfirm" to="transact">
  |          <action expression="#{paymentAction.doConfirm}"/>
  |       </transition>
  |    </page>
  | 
  |    <decision name="transact" expression="#{true}">
  |       <transition name="true" to="acknowledge">
  |          <action expression="#{paymentAction.doTransact}"/>
  |       </transition>
  |    </decision>
  | 
  |    <page name="acknowledge" view-id="/acknowledge.jspx">
  |       <redirect/>
  |       <end-conversation/>
  |    </page>
  |    
  | </pageflow-definition>
  | 

And finally the first page:

  | <?xml version="1.0"?>
  | <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" 
  |           xmlns:h="http://java.sun.com/jsf/html"
  |           xmlns:f="http://java.sun.com/jsf/core"
  |           xmlns:s="http://jboss.com/products/seam/taglib"
  |           xmlns="http://www.w3.org/1999/xhtml"
  |           version="2.0">
  |   <jsp:output doctype-root-element="html"
  |               doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
  |               doctype-system="http://www.w3c.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
  |   <jsp:directive.page contentType="text/html"/>
  |   <head>
  |     <title>Authenticate...</title>
  |   </head>
  |   <body>
  |     <h1>Authenticate...</h1>
  |     <f:view>
  | 	  <h:form>
  | 	    <h:messages globalOnly="true"/>
  | 	    <h:outputText value="Enter Account Number:"/>
  |         <h:inputText value="#{payment.accountNumber}" id="accountNumber" required="true">
  |         </h:inputText>
  |         <s:validateAll/>
  | 		<h:commandButton value="Ok" action="doAuthenticate"/>
  | 		<br/>
  | 	  </h:form>
  |     </f:view>
  |   </body>
  | </jsp:root>
  | 
  | 

I see this in the log file but the flow continues to the next page.  How can I make it stay on the first page?

2007-01-23 09:23:31,296 DEBUG [org.jboss.seam.interceptors.ValidationInterceptor] invalid value: accountNumber length must be between 10 and 12
2007-01-23 09:23:31,296 DEBUG [org.jboss.seam.interceptors.ValidationInterceptor] invalid value: accountNumber Must be alphanumeric.


Thanks in advance,

Daniel

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4005328#4005328

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4005328



More information about the jboss-user mailing list