Read the error message. Your index.page has this line:
<component id="copyright" value="Copyright">
but it should be:
<component id="copyright" type="Copyright">
just a small typo :)
Martin
On Fri, 01 Sep 2006 21:17:29 +0200, jake123 <[EMAIL PROTECTED]> wrote:
Hi, I am a beginner with tapestry and I am trying to create my first
custom
component. I am using Kent Tongs book as my source and doing the
Copyright
component, but I am doing somthing wrong becouse I receive a
org.apache.tapestry.util.xml.DocumentParseException that states: Unable
to
read context:/default/html/public/index.page: Attribute "value" must be
declared for element type "component". And then I got
org.xml.sax.SAXParseException that states: Attribute "value" must be
declared for element type "component".
I figure that there is something wrong with my mapping or the location of
the files or the location, but I cant find out what is wrong.
My mycompany.application looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE application PUBLIC
"-//Apache Software Foundation//Tapestry Specification 4.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
<application name="mycompany">
<library id="contrib"
specification-path="classpath:/org/apache/tapestry/contrib/Contrib.library"/>
<meta key="org.apache.tapestry.component-class-packages"
value="com.mycompany.ui.web.components"/>
<component-type type="Copyright"
specification-path="classes/com/mycompany/ui/web/components/Copyright.jwc"/>
</application>
My Copyright.html:
<html>
<body jwcid="$content$">
<hr>Copyright <span jwcid="year">2005</span>. Investacorp Inc. All rights
reserved.
</body>
</html>
My Copyright.jwc:
<?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">
<component-specification allow-body="no">
<description>It renders a copyright notice.</description>
<parameter name="holder" required="yes"/>
<component id="year" type="Insert">
<binding name="value" value="currentYear"/>
</component>
</component-specification>
My Copyright.java:
package com.mycompany.ui.web.components;
import java.util.GregorianCalendar;
import org.apache.tapestry.BaseComponent;
public class Copyright extends BaseComponent {
public int getCurrentYear() {
return new GregorianCalendar().get(GregorianCalendar.YEAR);
}
}
My index.page fale that tries to use the component:
<?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">
<page-specification class="com.mycompany.ui.web.action.home.HomeAction">
<component id="companyName" type="Insert" >
<binding name="value" value="repSite.companyName"/>
</component>
<component id="copyright" value="Copyright">
<binding name="holder" value="companyName"/>
</component>
</page-specification>
I have my java-class in a seperate folder structure:
src/main/java/com/mycompany/ui/web/components/Copyright.java
My .jwc file have this location:
WEB-INF/classes/com/mycompany/ui/web/components/Copyright.jwc
My .application have this location: WEB-INF/mycompany.application
As far as my knowlegde is I think this is correct... but it does not
work...can somebody point out the error/errors in my code?
thanks
Jacob
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]