Gwyn Evans wrote:
On 20/11/2007, Nino Saturnino Martinez Vazquez Wael
<[EMAIL PROTECTED]> wrote:
Bump for replies..? Does my mail make sense? Do I need to specify
anything further?
Nino Saturnino Martinez Vazquez Wael wrote:
Hi
I've been "playing" with both forms and listviews. And I wanted to
extend a form creating my own form that has captcha validation as
standard, I cant just seem to find where to place the markup when
extending Form?
Well, off-hand, I'd expect that the easiest way would be to do it
using markup inheritance -
http://wicket.apache.org/examplemarkupinheritance.html.
Hm the link you gave talks about inheritance for a page. However this
would mean that I had to put the <wicket:child> into the form in order
to add stuff to the form right? What about inheritance for a panel, that
way I could use it as a form. However I got some strange errors when
trying todo this. Heres some pseduo
panel.html
<wicket:panel>
<img wicket:id="myCaptchaimg"></img>
<form wicket:id="form">
<input wicket:id="captchamatchingtext" />
<wicket:child>
</form>
</wicket:panel>
panel.java
private final Form form
panel(String id)
{
super(id);
form=new Form("form");
add(form);
form.add(new textfield..)
add(new captcha...);
}
public addToForm(Component child){
form.add(child);
}
Then the extending panels can add more stuff to the form.. Is this
supposed to work?
I then tried doing it with a panel but also ran into
sometroubles.
Also I've been noticing that if you use a compound model with a
listview forexample my page has a compound model called article I add
the listview new listview("comments"). I would expect my item in the
populate implementation to get fed a comment compoundmodel, but it
does only get the compound model for the page, I then have to call
item.getModelObject and set the compundmodel manually. Is this
something that has been overseen, or am I missing the bigger picture?
I think so... Compare this...
HTML:
<ul wicket:id="comments">
<li wicket:id="comment">Dummy comment</li>
</ul>
Java: (compressed for vertical size!)
class Article {
private List comments = Arrays.asList(new String[]{"Comment One",
"Comment Two", "Comment Three"});
public List getComments() { return comments; }
}
and
public MyPage(final PageParameters parameters) {
setModel(new CompoundPropertyModel(new Article()));
ListView listView = new ListView("comments") {
protected void populateItem(ListItem item) {
item.add(new Label("comment", (String)item.getModelObject()));
}
};
}
add(listView);
gives the following output:
* Comment One
* Comment Two
* Comment Three
/Gwyn
This is what I meant extending your example a but, it feels odd to make
an extra compoundpropertymodel:
class Article {
private List<comment> comments=new arraylist<comments>...
public List getComments() { return comments; }
}
class Comment{
private String text...
private String author
....trival getters and setters...
}
public MyPage(final PageParameters parameters) {
setModel(new CompoundPropertyModel(new Article()));
ListView listView = new ListView("comments") {
protected void populateItem(ListItem item) {
setModel(new *CompundPropertyModel*(item.getModelObject()
))
item.add(new Label("comment"));
item.add(new Label("author"));
}
};
}
add(listView);
--
Nino Martinez Wael
Java Specialist @ Jayway DK
http://www.jayway.dk
+45 2936 7684
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]