1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
import com.googlecode.tabletags.tagsupport.PagerDisplay;
import com.googlecode.tabletags.tagsupport.Sortable;
import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.struts2.interceptor.SessionAware;
/**
* A test action that tests the rendering of the table tag.
*/
public class TableAction extends ActionSupport implements SessionAware,
Sortable {
// key in the session where the current page number is stored
public static final String PAGE_NUMBER = "PAGE_NUMBER";
public static final String COLUMN_KEY = "COLUMN_KEY";
public static final String SORT_ORDER = "SORT_ORDER";
private List items;
private Map session;
private String pagerCommand;
private PagerDisplay pagerDisplay;
private String sortColumnKey;
/**
* @see com.opensymphony.xwork2.ActionSupport#execute()
*/
public String execute() {
// Récup des données (Hibernate, etc...)
ItemDAO iDao = new ItemDAO();
List temp = iDao.findAll();
//tu peux aussi récupérer via les valeurs du PagerDisplay via les paramètres pour le rendre configurable.
pagerDisplay = new PagerDisplay(15,1,items.size());
int currentPage = getPageNumber();
if(pagerCommand != null) {
if("next".equals(pagerCommand) && currentPage < pagerDisplay.getTotalPages()) {
currentPage += 1;
} else if("previous".equals(pagerCommand) && currentPage > 1) {
currentPage -= 1;
}
session.put(PAGE_NUMBER, new Integer(currentPage));
}
int start = pagerDisplay.pageSize * (currentPage-1);
int stop = pagerDisplay.pageSize * currentPage
if(start<0) start = 0;
if(stop>temp.size()) stop = temp.size();
item = temp.subList(start,stop);
if(sortColumnKey != null) {
if(sortColumnKey.equals(getSortColumnKey())) {
if(DESCENDING.equals(getSortOrder())) {
session.put(SORT_ORDER, ASCENDING);
} else {
session.put(SORT_ORDER, DESCENDING);
}
} else {
session.put(COLUMN_KEY, sortColumnKey);
session.put(SORT_ORDER, DESCENDING);
}
}
return SUCCESS;
}
protected int getPageNumber() {
Integer pageNum = (Integer) session.get(PAGE_NUMBER);
if(pageNum == null) {
pageNum = new Integer(1);
session.put(PAGE_NUMBER, pageNum);
}
return pageNum.intValue();
}
public List getItems() {
return items;
}
public void setItems(List items) {
this.items = items;
}
public void setSession(Map session) {
this.session = session;
}
public String getPagerCommand() {
return pagerCommand;
}
public PagerDisplay getPagerDisplay() {
return pagerDisplay;
}
public void setPagerCommand(String pagerCommand) {
this.pagerCommand = pagerCommand;
}
public void setPagerDisplay(PagerDisplay pagerDisplay) {
this.pagerDisplay = pagerDisplay;
}
public String getSortColumnKey() {
String sortColumnKey = (String) session.get(COLUMN_KEY);
if(sortColumnKey == null) {
//Doit correspondre à la clé de la colonne par défaut
return "col1";
}
return sortColumnKey;
}
public String getSortOrder() {
String sortOrder = (String) session.get(SORT_ORDER);
if(sortOrder == null) {
return DESCENDING;
}
return sortOrder;
}
public void setSortColumnKey(String sortColumnKey) {
this.sortColumnKey = sortColumnKey;
}
} |
Partager