Update of
/var/cvs/applications/taglib/src/org/mmbase/bridge/jsp/taglib/functions
In directory james.mmbase.org:/tmp/cvs-serv15119
Modified Files:
Tag: MMBase-1_8
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.12.2.1
retrieving revision 1.12.2.2
diff -u -b -r1.12.2.1 -r1.12.2.2
--- ListFunctionTag.java 21 Sep 2007 12:55:27 -0000 1.12.2.1
+++ ListFunctionTag.java 22 Jul 2008 09:33:27 -0000 1.12.2.2
@@ -27,7 +27,7 @@
*
* @author Michiel Meeuwissen
* @since MMBase-1.7
- * @version $Id: ListFunctionTag.java,v 1.12.2.1 2007/09/21 12:55:27 michiel
Exp $
+ * @version $Id: ListFunctionTag.java,v 1.12.2.2 2008/07/22 09:33:27 michiel
Exp $
*/
public class ListFunctionTag extends AbstractFunctionTag implements
ListProvider, FunctionContainerReferrer, Writer {
@@ -40,6 +40,23 @@
private ContextCollector collector;
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);
+ }
+ public void setVarStatus(String s) throws JspTagException {
+ 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();
@@ -85,8 +102,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;
@@ -100,7 +122,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 {
@@ -133,6 +159,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