Hi, I have a problem when I try to call my index page that contain 7 custom components. One of them is a login component. this component generates a org.apache.tapestry.util.xml.DocumentParseException that says:
Unable to read context:/WEB-INF/components/Login.jwc: Document root element "component-specification", must match DOCTYPE root "page-specification". It also point out that the error are in my Login.jwc file: context:/WEB-INF/components/Login.jwc, line 5, column 42 1 <?xml version="1.0"?> 2 <!DOCTYPE page-specification PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0//EN" 3 "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd"> 4 5 <component-specification allow-body="no"> 6 <description>It renders a login form or a change password form.</description> 7 8 <!-- LOGIN FORM --> 9 <component id="loginForm" type="Form" > 10 <binding name="listener" value="listener:onLogin" /> I see no error in this file, and if I try to open the file in my web browser the entire file is opened so I guess that there is no XML error in th e file. Does anybody know how to solve this error? the entire Login.jwc look like this: <?xml version="1.0"?> <!DOCTYPE page-specification PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0//EN" "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd"> <component-specification allow-body="no"> <description>It renders a login form or a change password form.</description> <!-- LOGIN FORM --> <component id="loginForm" type="Form" > <binding name="listener" value="listener:onLogin" /> <binding name="delegate" value="beans.delegate" /> </component> <!-- INPUT BOXES --> <component id="inputUsername" type="TextField" > <binding name="value" value="userName" /> <binding name="displayName" value="literal:Username"/> <binding name="validators" value="validators:required,minLength=5" /> </component> <component id="inputPassword" type="TextField"> <binding name="value" value="password" /> <binding name="hidden" value="true" /> <binding name="displayName" value="literal:Password"/> <binding name="validators" value="validators:required,minLength=5" /> </component> <!-- LABELS --> <component id="userNameLabel" type="FieldLabel" > <binding name="field" value="component:inputUsername" /> </component> <component id="passwordLabel" type="FieldLabel" > <binding name="field" value="component:inputPassword" /> </component> <!-- VALIDATION --> <property name="loginCurrentFieldTracking" /> <component id="loginErrors" type="For" > <binding name="source" value="beans.delegate.fieldTracking" /> <binding name="value" value="loginCurrentFieldTracking" /> </component> <component id="loginError" type="Delegator" > <binding name="delegate" value="loginCurrentFieldTracking.errorRenderer" /> </component> <component id="loginIsInError" type="If"> <binding name="condition" value="loginCurrentFieldTracking.inError" /> </component> <!-- CHANGE PASSWORD FORM --> <component id="changePasswordForm" type="Form" > <binding name="listener" value="listener:onChangePassword" /> <binding name="delegate" value="beans.delegate" /> </component> <!-- INPUT BOXES --> <component id="inputOldPassword" type="TextField" > <binding name="value" value="oldPassword" /> <binding name="hidden" value="true" /> <binding name="displayName" value="literal:Old Password"/> <binding name="validators" value="validators:required,minLength=5" /> </component> <component id="inputNewPassword" type="TextField"> <binding name="value" value="newPassword" /> <binding name="hidden" value="true" /> <binding name="displayName" value="literal:New Password"/> <binding name="validators" value="validators:required,minLength=5" /> </component> <component id="inputConfirmNewPassword" type="TextField"> <binding name="value" value="confirmNewPassword" /> <binding name="hidden" value="true" /> <binding name="displayName" value="literal:Confirm New Password"/> <binding name="validators" value="validators:required,minLength=5" /> </component> <!-- LABELS --> <component id="oldPasswordLabel" type="FieldLabel" > <binding name="field" value="component:inputOldPassword" /> </component> <component id="newPasswordLabel" type="FieldLabel" > <binding name="field" value="component:inputNewPassword" /> </component> <component id="confirmNewPasswordLabel" type="FieldLabel" > <binding name="field" value="component:inputConfirmNewPassword" /> </component> <!-- VALIDATION --> <property name="changePasswordCurrentFieldTracking" /> <component id="changePasswordErrors" type="For" > <binding name="source" value="beans.delegate.fieldTracking" /> <binding name="value" value="changePasswordCurrentFieldTracking" /> </component> <component id="changePasswordError" type="Delegator" > <binding name="delegate" value="changePasswordCurrentFieldTracking.errorRenderer" /> </component> <component id="changepasswordIsInError" type="If"> <binding name="condition" value="changePasswordCurrentFieldTracking.inError" /> </component> </component-specification> Thanks Jacob -- View this message in context: http://www.nabble.com/Problem-with-one-of-my-Custom-Components-tf2411939.html#a6723285 Sent from the Tapestry - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]