Add a div to your page like below:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; 
charset=ISO-8859-1"> <title>Insert title here</title> </head> 
<body>

        <div wicket:id="csp"></div>

</body>
</html>

-----Original Message-----
From: PaulH98 [mailto:paulhuan...@gmail.com] 
Sent: 10 October 2009 14:58
To: users@wicket.apache.org
Subject: Re: how to inject arbitrary javascript code to a component markup?




McIlwee, Craig wrote:
> 
> If your component is a MarkupContainer you can override
> getAssociatedMarkupStream(boolean) and build the markup on the fly.  So
> maybe still have the HTML file that you read in as a template with some
> place holder string and in the override you replace the place holder with
> stuff you want to be assigned to the data variable.  Then use a
> StringResourceStream to create a MarkupResourceStream, use
> SimpleMarkupLoader to create a Markup instance from the
> MarkupResourceStream, and finally create a MarkupStream with your Markup
> instance.
> 
> One thing to note is that if your markup container has child components
> that will be updated via AJAX AND you don't have an HTML file (you build
> the entire string on the fly) then you may also have to override
> hasAssociatedMarkupStream and always return true else the component being
> updated won't be able to locate its parent.
> 
> Craig  
> 


Here is the java code of my component "CategorySelectPanel" that extends
Panel



> public class CategorySelectPanel extends Panel{
>       private static final long serialVersionUID = 1L;
>       public CategorySelectPanel(String wicketId){
>               super(wicketId);
>               WebMarkupContainer cat0=new WebMarkupContainer("cat0");
>               cat0.setOutputMarkupId(true);
>               add(cat0);
>               MarkupStream ms=getAssociatedMarkupStream(true); 
>               System.out.println(ms.toString());
>       
>       }
> }
> 

and here is the associated markup file "CategorySelectPanel.html"


> <wicket:panel>
>   <div wicket:id="cat0" class="cat0"></div>
> </wicket:panel>
> 
> 


Now I have  a simple test


> 
> public class TestPage extends WebPage{
>       public TestPage(){
>               CategorySelectPanel a= new CategorySelectPanel("csp");
>               add(a);
>       }
> }
> 
with the the following page html 


> 
> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
> <title>Insert title here</title>
> </head>
> <body>
> 
> </body>
> </html>
> 
> 

when I run the test, I got the following exception 



> WicketMessage: Can't instantiate page using constructor public
> com.tree.TestPage()
> 
> Root cause:
> 
> java.lang.IllegalStateException: No Page found for component
> [MarkupContainer [Component id = csp]]
> at org.apache.wicket.Component.getPage(Component.java:1763)
> at
>
org.apache.wicket.markup.html.WebMarkupContainer.getMarkupType(WebMarkupCont
ainer.java:60)
> at
>
org.apache.wicket.markup.DefaultMarkupCacheKeyProvider.getCacheKey(DefaultMa
rkupCacheKeyProvider.java:57)
> at org.apache.wicket.markup.MarkupCache.getMarkup(MarkupCache.java:291)
> at
> org.apache.wicket.markup.MarkupCache.getMarkupStream(MarkupCache.java:216)
> at
>
org.apache.wicket.MarkupContainer.getAssociatedMarkupStream(MarkupContainer.
java:351)
> at com.tree.CategorySelectPanel.<init>(CategorySelectPanel.java:37)
> at com.tree.TestPage.<init>(TestPage.java:7)
> 
> 

Basically, "MarkupStream ms=getAssociatedMarkupStream(true) " caused this
exception. Can anyone shed some light on this? I am trying to Carig's
suggestion to get the MarkupStream and alter it with my stuff.


-- 
View this message in context:
http://www.nabble.com/how-to-inject-arbitrary-javascript-code-to-a-component
-markup--tp25833726p25834380.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to