We may be able to leverage JSR 303 to provide a common validation mechanism for all web frameworks. An RI of this JSR is scheduled to be released in April. I think we could help all the frameworks if we tried to integrate it. If you can't wait that long, it's largely based on Hibernate Validator so we may try integrating that initially.

Of course, the problem with validation rules on model objects is they'll likely be common for all contexts (i.e. different forms on different pages). I don't know if JSR 303 allows for having different contexts.

You might look at http://in.relation.to for more information on JSR 303.

http://in.relation.to/8746.lace

HTH,

Matt

On Mar 16, 2008, at 8:53 AM, Kanchana wrote:

Really appreciate your reply Matt.I too just figured that out yesterday. I wonder how we could propose a simple and better validation architecture in Appfuse rather combursom of struts validation which each to go through a long configuration.I'm willing to contribute in appfuse if we can figure out
a way to do it with our having repeated code for the at controller to
validation of form submission to check null values ,field length simply all the flied validation some where in a centralized.I referred some areas of using API and Spring validation in Appfuse.But I don't want to have the validation to be done in such Spring/using hibernet method which extending
from the model/Entity classes level because the model class can have
optional property fields use is basing different controller requirements.To
achieve this  i wonder whether there is a better design some simple to
handle in the view.
Thanks
Kanchana




mraible wrote:

Tag libraries are unable to process at submission time as it simply
goes from form -> server. You could use JavaScript and trap the
onsubmit event, but that's about it.

Matt

On 3/13/08, Kanchana <[EMAIL PROTECTED]> wrote:

 Hi All

I'm trying out with a new approach of validating the form submission
using
 a tag library.I went through the code base and found out that
appfuse.tld is
the centralized custom tag library which has defined some tag libraries such as FormatDate in it.So Far all these validations are limited to the view but not involving the form submission process. I wonder how we can write a custom lag library which can use in the form validation in the submition level.When I debuged the Formatdate tag library class when
the
form is load .It calls only when the page is load but not at time after
we
submit it.I wonder a approach of writing tag library/reference API to
handle
the tag libraries after submitting the form.Any idea will be greatly
 appreciated.
 Thanks
 Kanchana




 Kanchana wrote:

Hi All

I'm hitting my head against to the wall  to do a filed length
validation
using a custom tag library in appfuse 2 .I saw  many of the default
tld
are defined in the WEB-INF/appfuse.tld and those are simulated in view
jsp
using taglib.jsp.So accordingly i also tried adding a new tag lib
class in
the web/src/java/taglib and have the tag defined in the appfuse.tld.i
packaged the project and deployed assuming the rest of the
configurations
are done automatically and I called the tag lib in the jsp using
followings

<%@ include file="/common/taglibs.jsp"%> and ad follows

TravelLocation is a model classes which as a travelLocationId and name
as
properties and my tag lib name is nullValuesTag  which i defined in
the
appfuse.tld.But unfortunately i don't see the validation is happening
and
I don't see the out put.I did the validation for the length of the
travel
location name property which defined as 20 characters in the DB.Can
any
one please help me to figure out how to write custom validation in
appfuse
whether my approach is correct.

FYI: in the taglib.jsp i have pass the key values of
nullValuesTag.length
to applicationRescources.properties files.I'm not sure how this
properties
file is read at run time and i hoped to see the message when the
validation is correctly done

Thanks and regards
Kanchana


code piece from the  jsp to call the tag lib
----------------------------------------------

<spring:bind path="travelLocation.travelLocationId">
<input type="hidden" name="id" value="<c:out
value="${status.value}"/>"/>
</spring:bind>
 <div class="content_table">
  <p>
  <div class="form_table_column1" >

            <appfuse:label styleClass="desc"
key="travlLocation.name"/>
  </div>
  <div class="form_table_column2">


   <spring:bind path="travelLocation.name">

   <appfuse:nullValuesTag value="<%=request.getParameter("name")%>"
key="">
   </appfuse:nullValuesTag>

   <input  class="TextField" type="text" name="name" id="name"
value="<c:out value="${status.value}"/>" />
   </spring:bind>
  </div>
  </p>


Appfuse.tld code piece.

-------------------------------------------------------------------- --------------
<tag>

<name>nullValuesTag</name>

<tagclass>lk.mazarin.lgs.webapp.taglib.NullValuesTag</tagclass>

<bodycontent>JSP</bodycontent>

<info>tests zip code</info>



<attribute>

<name>value</name>

<required>true</required>

<rtexprvalue>true</rtexprvalue>

</attribute>



<attribute>

<name>length</name>

<required>false</required>

<rtexprvalue>true</rtexprvalue>

</attribute>

</tag>
=======================================
NullValuesTag.java

package lk.mazarin.lgs.webapp.taglib;

import java.io.IOException;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import lk.mazarin.lgs.util.DateUtil;


import org.springframework.web.servlet.support.RequestContext;

/**
 * <p>This class is designed to render a formatted date tag in the
format
 * the user's locale has speficied.</p>
 *
 * <p>It is designed to be used as follows:
 * <pre>&lt;tag:date value="comman.datefield" /&gt;</pre>
 * </p>
 *
 * @jsp.tag name="date" bodycontent="empty"
 */

public class NullValuesTag extends TemplateTag {
      private String value;
      private int length;

      public  NullValuesTag() {
              value = null;
              length = 1;
      }

      public int doStartTag() throws JspException {

              if (value == null)
                      return 1; //check if we have zip code
              if (value.equals(null))
                      return 1; //check if value is not null

              if (value.length()> 20) {
//has to be an integer! short case of zip code
xxxxx
                      try {
                              Integer.parseInt(value);
                              return 0;
                      } catch (NumberFormatException e) {
                              return 1;
                      }
              }

              /*else if (value.length() == 10) {
                      // long case on Zip code xxxxx-xxxx
                      String part1 = value.substring(0, 5);
                      String dash = value.substring(5, 6);
                      String part2 = value.substring(6);
                      if (!dash.equals("-"))
                              return 1;
                      try {
                              Integer.parseInt(part1);
                              Integer.parseInt(part2);
                              return 0;
                      } catch (NumberFormatException e) {
                              return 1;
                      }
              }*/
              return 1;
      }

      public int getLength() {
              return length;
      }

      public String getValue() {
              return value;
      }

      public void release() {
              value = null;
              length = 1;
      }

      public void setLength(int i) {
              length = i;
      }

      public void setValue(String s) {
              value = s;
      }
}



 --

View this message in context:
http://www.nabble.com/Writing-custom-tag-libraries-in-appfuse-2- tp15872546s2369p16022292.html

Sent from the AppFuse - User mailing list archive at Nabble.com.


-------------------------------------------------------------------- -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
View this message in context: http://www.nabble.com/Writing-custom- tag-libraries-in-appfuse-2-tp15872546s2369p16080504.html
Sent from the AppFuse - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to