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><tag:date value="comman.datefield" /></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]