You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by jake123 <ja...@gmail.com> on 2006/10/09 20:56:16 UTC

Problem with one of my Custom Components

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: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Problem with one of my Custom Components

Posted by jake123 <ja...@gmail.com>.
Thank you Shing for your answer. This was an error from my side becouse I had
this as a normal page first before I converted it to a component. Now it is
working just fine.

Cheers,
Jacob

-- 
View this message in context: http://www.nabble.com/Problem-with-one-of-my-Custom-Components-tf2411939.html#a6723887
Sent from the Tapestry - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: Problem with one of my Custom Components

Posted by Shing Hing Man <ma...@yahoo.com>.
For components, .jwc should start with (note that
component-specification) :
 
<?xml version="1.0"?>
<!DOCTYPE component-specification PUBLIC
  "-//Apache Software Foundation//Tapestry
Specification 4.0//EN"
 
"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">

Shing 

--- jake123 <ja...@gmail.com> wrote:

> 
> 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"
> 
=== message truncated ===


Home page :
  http://uk.geocities.com/matmsh/index.html


	
	
		
___________________________________________________________ 
All new Yahoo! Mail "The new Interface is stunning in its simplicity and ease of use." - PC Magazine 
http://uk.docs.yahoo.com/nowyoucan.html

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org