i think this is the browser caching the choice not wicket
-igor
On 12/27/06, Andrew Strickland <[EMAIL PROTECTED]> wrote:
I have a class that extends DropDownChoice, called TCOChooser. It is for
some very minor things (overriding wantOnSelectionChanged, the choice
renderer, etc ). I have a page that uses TCOChooser to allow the user to
select a TCO that changes the data displayed in a table lower on the page.
When the user selects a new TCO the table updates as expected. When I use
the back button on the browser the table reverts as expected. However, the
TCOChooser does not revert, and stays with the last user selected value.
My question is, am I doing something wrong or unexpected here or is this a
problem with Wicket's modelChanged and versioning strategy or perhaps even a
limitation of the browser or the html select element?
Below is TCOChooser:
public class TCOChooser extends DropDownChoice{
private OrderPage orderPage;
public TCOChooser(String id, IModel model, List choices, OrderPage
orderPage){
super(id, model, choices, new TCOChoiceRenderer());
this.orderPage = orderPage;
}
protected boolean wantOnSelectionChangedNotifications() {
return true;
}
protected void onSelectionChanged(final Object newSelection) {
orderPage.updateOrderTable((TCO)newSelection);
}
}
Below is my page ( OrderPage ):
public class OrderPage extends WebPage {
DataTable orderTable;
DropDownChoice tcoChooser;
TCO TCO;
/**
* Creates a new instance of OrderPage. TCO will be null and the
entire
* list of AbstractOrder(s) will be returned.
*/
public OrderPage() {
}
/**
* Creates a new instance of OrderPage. The AbstractOrder(s) that
match
* the TCO will be returned.
*
* @param TCO The TCO to filter the list of AbstractOrder(s) by.
*/
public OrderPage(TCO TCO){
this.TCO = TCO;
}
private void initTCOChooser(){
List tcos = new TCODAO().getTCOs();
/* If the TCO was not supplied through the constructor, default to
the first item in the TCO drop down */
if( TCO == null ){
TCO = (TCO)tcos.get(0);
}
tcoChooser = new TCOChooser("tcoChoices", new Model(TCO), tcos,
this);
add(tcoChooser);
}
private void initOrderTable(){
List columns = new ArrayList();
columns.add(new PropertyColumn(new Model("TSR Number"), "
TSRNumber.number", "TSRNumber.number"));
columns.add(new PropertyColumn(new Model("TSO Number"), "
TSONumber.number", "TSONumber.number"));
columns.add(new PropertyColumn(new Model("CCSD"), "CCSD.number", "
CCSD.number"));
orderTable = new DefaultDataTable("orders", columns, new
OrderDataProvider(TCO), 25);
add(orderTable);
}
@Override
protected void onAttach() {
if(tcoChooser==null){
initTCOChooser();
}
if( orderTable == null ){
initOrderTable();
}
}
/*
* A public callback to allow the TCOChooser component to update the
order table when a new TCO selection is made.
*
* @param TCO The TCO to limit the orders in the table to.
*/
public void updateOrderTable(TCO TCO){
this.TCO = TCO;
remove(orderTable);
initOrderTable();
}
}
Thanks much,
Andy Strickland
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share
your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
Wicket-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wicket-user