[jboss-user] [JBoss Seam] - How to display exception messages for fields

ellenzhao do-not-reply at jboss.com
Mon Aug 13 12:47:39 EDT 2007


Here is the entity class:



  | @Entity
  | @Name("foo")
  | @Table(name = "foo")
  | public class Foo implements Serializable {
  | ...
  | @Column(name = "non_repeat_cycle", nullable = false)
  |   public Short getNonRepeatCycle() {
  |     return nonRepeatCycle;
  |   }
  | 
  | public void setNonRepeatCycle(Short nonRepeatCycle)
  |       throws IllegalNonRepeatCycleException {
  |    boolean valid = true;
  |     if (nonRepeatCycle <= 0) {
  |       valid = false;
  |       throw new IllegalNonRepeatCycleException(nonRepeatCycle);
  |     } 
  |     if (valid){
  |       this.nonRepeatCycle = nonRepeatCycle;
  |     }
  |   }
  | ...
  | 


Client code in xhtml:

  | <s:decorate template="layout/edit.xhtml">
  |           <ui:define name="label">Non-repeat cycle:</ui:define>
  |           <h:inputText
  |             value="#{fooManager.foo.nonRepeatCycle}" required="true" />
  |           <h:outputText value=" days" />
  |         </s:decorate>
  | 
  | 

The idea is that,  this way the entity knows how to validate itself and I do not have to write a separate validator.

In fact it works very well, when I tested with the number "-3", there is error message displayed in red and the conversation hanged like expected (hanged but not killed, after I corrected the value, the conversation goes smoothly), and the view is also like expected....The only problem is, the error message looks like this:

  | /foo-management.xhtml @58,31 value="#{fooManager.foo.nonRepeatCycle}": Error writing 'nonRepeatCycle' on type myproject.entity.Foo
  | 

My exception class looks like this:

  | public class IllegalNonRepeatCycleException extends Exception {
  |   private static final String DEFAULT_MSG = "Non-repeat-cycle must be greater than zero!";  
  |   @Logger
  |   private static Log log;
  | 
  |   public IllegalNonRepeatCycleException(){
  |     super(DEFAULT_MSG);
  |   }
  |   
  |   public IllegalNonRepeatCycleException(Short nonRepeatCycle) {
  |     super(DEFAULT_MSG + " " + nonRepeatCycle + " is illegal.");
  |     log.info("Exception generated!");
  |   }
  |   
  |   public String toString(){
  |     return this.getMessage();
  |   }
  | }
  | 

It would be nice if the error message in the view can be the exception message. How to do this? Thanks in advance for any help!


Regards,
Ellen

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

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



More information about the jboss-user mailing list