Update of
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/functions
In directory james.mmbase.org:/tmp/cvs-serv15210
Modified Files:
ListFunctionTag.java
Log Message:
MMB-1689
See also:
http://cvs.mmbase.org/viewcvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/functions
See also: http://www.mmbase.org/jira/browse/MMB-1689
Index: ListFunctionTag.java
===================================================================
RCS file:
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/functions/ListFunctionTag.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- ListFunctionTag.java 23 Feb 2008 15:54:27 -0000 1.14
+++ ListFunctionTag.java 22 Jul 2008 09:39:15 -0000 1.15
@@ -27,7 +27,7 @@
*
* @author Michiel Meeuwissen
* @since MMBase-1.7
- * @version $Id: ListFunctionTag.java,v 1.14 2008/02/23 15:54:27 michiel Exp $
+ * @version $Id: ListFunctionTag.java,v 1.15 2008/07/22 09:39:15 michiel Exp $
*/
public class ListFunctionTag extends AbstractFunctionTag implements
ListProvider, FunctionContainerReferrer, Writer {
@@ -39,8 +39,10 @@
protected int currentItemIndex= -1;
private ContextCollector collector;
- private Attribute comparator = Attribute.NULL;
+ protected Attribute comparator = Attribute.NULL;
protected Attribute varStatus = Attribute.NULL;
+ protected Attribute max = Attribute.NULL;
+ protected Attribute offset = Attribute.NULL;
public void setComparator(String c) throws JspTagException {
comparator = getAttribute(c);
@@ -49,6 +51,12 @@
varStatus = getAttribute(s);
}
+ public void setMax(String m) throws JspTagException {
+ max = getAttribute(m);
+ }
+ public void setOffset(String o) throws JspTagException {
+ offset = getAttribute(o);
+ }
public int size(){
return returnCollection.size();
@@ -95,8 +103,13 @@
if (!comparator.equals(Attribute.NULL)) {
ListSorter.sort((List)returnCollection, (String)
comparator.getValue(this), this);
}
+ int o = offset.getInt(this, 0);
iterator = returnCollection.iterator();
- if (iterator.hasNext()) {
+ while(currentItemIndex + 1 < o && iterator.hasNext()) {
+ iterator.next();
+ currentItemIndex++;
+ }
+ if (iterator.hasNext() && (currentItemIndex + 1) < (o +
max.getInt(this, Integer.MAX_VALUE))) {
return EVAL_BODY_BUFFERED;
}
return SKIP_BODY;
@@ -110,7 +123,11 @@
helper.doAfterBody();
collector.doAfterBody();
- if (iterator.hasNext()){
+ if (! "".equals(varStatus.getString(this))) {
+
getContextProvider().getContextContainer().unRegister(varStatus.getString(this));
+ }
+
+ if (iterator.hasNext() && (currentItemIndex + 1) < max.getInt(this,
Integer.MAX_VALUE)) {
doInitBody();
return EVAL_BODY_AGAIN;
} else {
@@ -143,6 +160,10 @@
if (getId() != null) {
getContextProvider().getContextContainer().register(getId(),
helper.getValue());
}
+ if (! "".equals(varStatus.getString(this))) {
+ org.mmbase.bridge.jsp.taglib.util.ContextContainer cc =
getContextProvider().getContextContainer();
+ cc.register(varStatus.getString(this), getLoopStatus());
+ }
}
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs