Hi
it seems that
item.add(new TextField<String>("itemId", new
PropertyModel<String>(item.**getModel(),
"itemId")));
should be
item.add(new TextField<String>("itemId", new
PropertyModel<String>(item.**getModelObject(),
"itemId")));
Joe
On Mon, Aug 1, 2011 at 6:35 PM, Mike Mander <[email protected]> wrote:
> Hi,
>
> i would like to build up a stateless page for collecting an itemId and an
> amount from my user.
> The website should act as a direct shopping formular. The user only should
> insert the data
> and on form submission the itemId is checked for existence.
> A helper button should clear the field values from the appropriate row. All
> has to work
> without any javascript.
>
> My intention was that i create the stateless page, present it to the user,
> collect the data,
> submit the form, clear the row data and present the stateless page again to
> the user
> with data in row cleared. But i don't get it to work.
>
> My question: If i post the form an page is coming back everything is
> recreated and the values
> from the page parameters are not deployed to appropriate components
> automatically.
> Do i have to do this by hand? Or is there a way?
>
> I use wicket 1.4.17.
>
> Thanks for helping me
> Mike
>
> <code>
> HomePage.java
> import java.util.Arrays;
> import java.util.List;
>
> import org.apache.wicket.**PageParameters;
> import org.apache.wicket.devutils.**stateless.StatelessComponent;
> import org.apache.wicket.markup.html.**WebPage;
> import org.apache.wicket.markup.html.**form.Button;
> import org.apache.wicket.markup.html.**form.StatelessForm;
> import org.apache.wicket.markup.html.**form.TextField;
> import org.apache.wicket.markup.html.**list.ListItem;
> import org.apache.wicket.markup.html.**list.ListView;
> import org.apache.wicket.model.**PropertyModel;
>
> @StatelessComponent
> public class HomePage extends WebPage {
>
> public HomePage(final PageParameters parameters) {
> super(parameters);
> final StatelessForm<?> form;
> add(form = (StatelessForm<?>) new StatelessForm<Void>("form"));
> form.add(new ListView<ItemModel>("item", items()) {
>
> @Override
> protected void populateItem(final ListItem<ItemModel> item) {
> item.add(new TextField<String>("itemId", new
> PropertyModel<String>(item.**getModel(), "itemId")));
> item.add(new TextField<Integer>("amount", new
> PropertyModel<Integer>(item.**getModel(), "amount")));
> item.add(new Button("clearContent") {
> @Override
> public void onSubmit() {
> item.getModelObject().clear();
> }
> });
> }
> }.setReuseItems(true));
> }
>
> private List<ItemModel> items() {
> return Arrays.asList(new ItemModel(0), new ItemModel(1));
> }
> }
> </code>
>
> ItemModel.java
> <code>
> import org.apache.wicket.util.string.**Strings;
>
> public class ItemModel {
>
> private String _itemId = null;
> private int _amount = 1;
> private int _pos = 0;
>
> public ItemModel(int pos) {
> _pos = pos;
> System.out.println(this);
> }
>
> public ItemModel(String key) {
> if (!Strings.isEmpty(key)) {
> String[] parts = key.split("-");
> setPos(Integer.valueOf(parts[**0]).intValue());
> setItemId(String.valueOf(**parts[1]));
> setAmount(Integer.valueOf(**parts[2]).intValue());
> }
> }
>
> public int getAmount() {
> return _amount;
> }
>
> public void setAmount(int amount) {
> _amount = amount;
> }
>
> public String getItemId() {
> return _itemId;
> }
>
> public void setItemId(String itemId) {
> _itemId = itemId;
> }
>
> public int getPos() {
> return _pos;
> }
>
> public void setPos(int pos) {
> _pos = pos;
> }
>
> public String createKey() {
> StringBuilder key = new StringBuilder().append(getPos(**
> )).append("-").append(**getItemId()).append("-").**append(getAmount());
> return key.toString();
> }
>
> public void clear() {
> setItemId(null);
> setAmount(1);
> }
> }
> </code>
>
> HomePage.html
> <code>
> <html xmlns:wicket="http://wicket.**apache.org/dtds.data/wicket-**
> xhtml1.4-strict.dtd<http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd>"
> >
> <head>
> <title>Wicket Quickstart Archetype Homepage</title>
> </head>
> <body>
> <strong>Wicket Quickstart Archetype Homepage</strong>
> <br/><br/>
> <a href="/">Home</a>
> <form wicket:id="form">
> <table>
> <tr>
> <td>Item</td>
> <td>Amount</td>
> <td>Clear content</td>
> </tr>
> <tr wicket:id="item">
> <td><input wicket:id="itemId" /></td>
> <td><input wicket:id="amount" /></td>
> <td><input type="submit" wicket:id="clearContent" /></td>
> </tr>
> </table>
> </form>
> </body>
> </html>
> </code>
>
> ------------------------------**------------------------------**---------
> To unsubscribe, e-mail:
> users-unsubscribe@wicket.**apache.org<[email protected]>
> For additional commands, e-mail: [email protected]
>
>